【问题标题】:mysql_fetch_array() expects parameter 1 to be resource, object given [duplicate]mysql_fetch_array() 期望参数 1 是资源,给定对象 [重复]
【发布时间】: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] =>
)

【问题讨论】:

    标签: php mysql arrays codeigniter object


    【解决方案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() 只能返回布尔值或资源。在正常情况下,你得到的错误是不可能的。

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

        1. 您的示例代码缺少您实际将 `$stuff` 的值重新分配给 Codeigniter 查询对象的部分。
        2. 您正在使用 PHP 源代码的修改版本。升级 PHP 时,这对您来说不是一个有趣的时刻。
        3. 使用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,第二个没有影响。
          猜你喜欢
          • 2011-06-05
          • 1970-01-01
          • 2011-06-21
          • 2011-02-11
          • 2011-08-28
          • 1970-01-01
          • 2012-07-31
          相关资源
          最近更新 更多