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

时间:2011-09-01 22:44:42

标签: php mysql codeigniter while-loop

  

可能重复:
  mysql_fetch_array() expects parameter 1 to be resource, boolean given in select

我的代码中出错的原因是什么以及如何修复?(我使用codeigniter)

$query_hotel_search = $this->db->query("SELECT * FROM hotel_submits WHERE name LIKE '%$hotel_search%' ORDER BY name asc");
$units = array();
while( $row = mysql_fetch_row( $query_hotel_search ) ) // Line 27
{
   $units = unserialize( $row[0] );
}
echo json_encode(var_dump($units));

错误:

  

遇到PHP错误
严重性:警告
消息:   mysql_fetch_row()期望参数1是资源,给定对象
  行号:27

输出:array(0) { } null

更新

错误:

  

遇到PHP错误
严重性:通知
消息:   unserialize()[function.unserialize]:偏移量为0的3个字节的错误
  行号:29

输出:bool(false) null

查看我的数据库:http://i.stack.imgur.com/IORSM.jpg

$query_hotel_search = mysql_query("SELECT * FROM hotel_submits WHERE name LIKE '%$hotel_search%' ORDER BY name asc");
            if(mysql_num_rows($query_hotel_search)==0){
                return '0';
            }else{
                $units = array();
                while( $row = mysql_fetch_row( $query_hotel_search ) )
                {
                   $units = unserialize( $row->units[0] ); // Line 29
                }
                echo json_encode(var_dump($units));
            }

2 个答案:

答案 0 :(得分:1)

http://de2.php.net/manual/en/function.mysql-fetch-row.php

mysql_fetch_row()不是查询本身,而是来自mysql_query命令(这是一种资源)的结果。

查看PHP文档中的示例(在顶部链接),您将获得mysql_fetch_row的功能。

也许$ query_hotel_search的分配可以澄清情况。

答案 1 :(得分:0)

您正在使用codeigniter对象作为mysql资源。相反,你应该使用codeigniter提供的对象迭代器来遍历结果。

foreach($query_hotel_search->result() as $row)
{
// $row as object
}

foreach($query_hotel_search->result_array() as $row)
{
// $row as array
}

对于第二部分(UPDATE),mysql_fetch_row()返回一个枚举数组。所以你应该使用:

$units = unserialize($row[12]);