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->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 查询的期望值