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

Posted

技术标签:

【中文标题】mysql_fetch_array() 期望参数 1 是资源,给定对象 [重复]【英文标题】:mysql_fetch_array() expects parameter 1 to be resource, object given [duplicate] 【发布时间】:2011-09-23 16:41:29 【问题描述】:

可能重复: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] =>
)

【问题讨论】:

【参考方案1】:

您将收到 CodeIgniter object 回复。您可以使用它在实例上调用_fetch_assoc()

【讨论】:

【参考方案2】:

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

然后试试这个:

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

因为这就是对象堆栈中的资源。

【讨论】:

没问题!很高兴有帮助! :D【参考方案3】:

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

我相信您当前的资源位于$stuff-&gt;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";
 

【讨论】:

【参考方案4】:

mysql_query() 只能返回布尔值或资源。在正常情况下,你得到的错误是不可能的。

这意味着可能会发生以下三种情况之一:

    您的示例代码缺少您实际将 `$stuff` 的值重新分配给 Codeigniter 查询对象的部分。 您正在使用 PHP 源代码的修改版本。升级 PHP 时,这对您来说不是一个有趣的时刻。 使用override_function() 或runkit_function_redefine(),您、Codeigniter 或 Codeigniter 插件正在重新分配 mysql_query() 的定义以返回 Codeigniter 查询对象。这会产生相当不切实际的依赖。

【讨论】:

【参考方案5】:

试试这个:

$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");

【讨论】:

两个都试过了,第一个只是在错误中将数组更改为 assoc,第二个没有影响。

以上是关于mysql_fetch_array() 期望参数 1 是资源,给定对象 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

登录脚本中的“警告:mysql_fetch_array() 期望参数 1 是资源,布尔值”

什么是 mysql_fetch_array() 期望参数 1 是资源? [复制]

mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows 等...期望参数1是资源

mysql_fetch_array 不呈现 SQL 查询的期望值

需要有关 mysql_fetch_array() 错误的帮助?

警告:sqlite_query() 期望参数 1 是资源,给定字符串 [重复]