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,你会发现它不是一个数组,而是一个资源。