PHP:警告:sort()期望参数1是数组,给定的资源

我想用sort()函数来排列表列表的数组,但是我得到了同样的警告我的代码如下:

<?PHP require_once("lib/connection.php"); $result = mysql_query("SHOW TABLES FROM `st_db_1`"); sort($result); foreach ($result as $result){ echo $result ; } ?> 

我得到的警告是:

 Warning: sort() expects parameter 1 to be array, resource given in C:\wamp\www\Copy (4) of st_db_1\test_2.php on line 9 Warning: Invalid argument supplied for foreach() in C:\wamp\www\Copy (4) of st_db_1\test_2.php on line 10 

警告很清楚: mysql_query不返回一个包含查询结果的数组,而是一个资源。 你需要一个像mysql_fetch_array()这样的函数来返回你需要的数据(你可以在其上执行sorting操作)。

请参阅使用mysql_query() http://nl3.php.net/mysql_query的手册;

也许不相关,但你可以通过在查询中添加ORDER BY <fieldname>来立即在MySQL中sorting结果。

variables$ result只是types结果的一个资源。 您需要使用例如mysql_fetch_assoc()从结果集中获取数据。

 $result = mysql_query("SHOW TABLES FROM `st_db_1`"); $array = array(); while ($row = mysql_fetch_assoc($result)) { $array[] = $row["Tables_in_st_db_1"]; } sort($array); foreach ($array as $item) { echo $item; } 

我没有提供可以想象的最有效的代码,但这应该清楚发生了什么事情并解决您的问题:

  $result = mysql_query("SHOW TABLES FROM `st_db_1`"); $my_array_of_table_names = array(); while ( $row = mysql_fetch_array($result, MYSQL_NUM)) { $my_array_of_table_names[] = $row[0]; } sort($my_array_of_table_names); foreach ($my_array_of_table_names as $table_name){ echo "$table_name\n"; } 

你的问题是,你实际上没有从查询中获取数据。

mysql_query()不会给你一个logging集。

它所做的是查询数据库并返回一个数据库资源,然后用它来获取数据。

你需要的是在调用mysql_query() ,你还需要调用mysql_fetch_array()或类似的函数。 (有一系列可用的function,但这可能是在这种情况下使用的最好的function)。 然后sort()数据进行sort() ,而不是$result

它清楚地表明:它期望一个数组,并通过其他的东西。

如果你已经检查了$result的types,你会发现它不是一个数组,而是一个资源。