可能重复: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 回答
http://de2.php.net/manual/en/function.mysql-fetch-row.php
mysql_fetch_row()不是查询本身,而是mysql_query命令(这是一个资源)的结果 .
查看PHP文档中的示例(在顶部链接),您将获得mysql_fetch_row的功能 .
也许$ query_hotel_search的分配可以澄清情况 .
您正在使用codeigniter对象作为mysql资源 . 相反,您应该使用codeigniter提供的对象迭代器来遍历结果 .
对于第二部分(UPDATE),mysql_fetch_row()返回一个枚举数组 . 所以你应该使用: