首页 文章

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

提问于
浏览
1

可能重复:mysql_fetch_array()期望参数1是资源,在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

UPDATE:

错误:

遇到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 回答

  • 1

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

    mysql_fetch_row()不是查询本身,而是mysql_query命令(这是一个资源)的结果 .

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

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

  • 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]);
    

相关问题