可能重复:
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));
}
答案 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]);