mysql_fetch_array()期望参数1是资源,给定对象

时间:2011-06-27 17:12:03

标签: php mysql arrays codeigniter object

  

可能重复:
  PHP: Warning: sort() expects parameter 1 to be array, resource given

我一直收到这个奇怪的错误。然而,当我检查它时,似乎很好。

$stuff=mysql_query('SELECT id, name FROM albums');
$albums_list='';
print_r($stuff);
while ($row=mysql_fetch_array($stuff))
{
    print_r($row);
    $albums_list .= "<option value=" . $row[0]['id'] . ">" . $row[0]['name'] . "</option>\n";
}  

print_r($stuff);返回

CI_DB_mysql_result Object ( 
    [conn_id] => Resource id #37 
    [result_id] => Resource id #74 
    [result_array] => Array ( ) 
    [result_object] => Array ( ) 
    [current_row] => 0 
    [num_rows] => 1 
    [row_data] =>
)

5 个答案:

答案 0 :(得分:5)

你回来了CodeIgniter object。您可以使用它来调用实例上的_fetch_assoc()

答案 1 :(得分:1)

这很奇怪,所以mysql_query返回一个对象而不是结果。

然后尝试:

while ($row=mysql_fetch_array($stuff->result_id))

就像那个对象堆栈中的资源一样。

答案 2 :(得分:1)

哇......太奇怪了。不知何故,你得到一个CodeIgniter数据库对象。你在某处导入它吗?您当前的代码是否使用CodeIgniter?

我相信您当前的资源位于$stuff->result_id,但使用方法here可能会更好。 result_array可能会做你正在尝试的事情。

作为旁注:

while ($row=mysql_fetch_array($stuff))
{
    print_r($row);
    // don't use row[0]['id']. use row['id']. 
    // You won't get a multi-dimensional array back in any case
    $albums_list .= "<option value=" . $row['id'] . ">" . $row['name'] . "</option>\n";
} 

答案 3 :(得分:1)

mysql_query()只能返回布尔值或资源。在正常情况下,您无法获得错误。

这意味着可能发生以下三件事之一:

  1. 您的示例代码缺少实际将`$ stuff`的值重新签名到Codeigniter查询对象的部分。
  2. 您正在使用PHP源代码的修改版本。升级PHP时,对你来说不是一个有趣的时间。
  3. 使用override_function()runkit_function_redefine(),您,Codeigniter或Codeigniter插件会重新分配mysql_query()的定义以返回Codeigniter查询对象。这造成了非常不切实际的依赖。

答案 4 :(得分:0)

试试这个:

$stuff=mysql_query('SELECT id, name FROM albums');
$albums_list='';
print_r($stuff);
while ($row=mysql_fetch_assoc($stuff))
{
    print_r($row);
    $albums_list .= "<option value=" . $row['id'] . ">" . $row['name'] . "</option>\n";
}  

您可能遇到与此处相同的问题:mysqli_fetch_array()/mysqli_fetch_assoc()/mysqli_fetch_row() expects parameter 1 to be resource or mysqli_result, boolean given

试试这个:

$stuff=mysql_query("SELECT id, name FROM albums");