我的餐桌预订由以下字段组成:小时,分钟,日,月,名称,表格,数字
当我按如下方式执行查询时:
$query = "select * from reservation";
$result = $db->query($query);
$row = $result->fetch_assoc();
效果很好。
但是当我将查询更改为
时$query = "select * from reservation where table like '%1%'";
我在apache日志中得到一个空白结果和以下错误:
2011年8月8日星期一20:17:19] [错误] [client :: 1] PHP致命错误:在/srv/http/reservation.php上的非对象上调用成员函数fetch_assoc() 43,引用者:http://localhost/
如果我将其更改为以下内容:
$query = "select * from reservation where 'table'=1";
结果是0。 (表是INT)
第二个问题是,我使用的是最新语法吗?我见过大多数人都使用mysql_query()。
答案 0 :(得分:3)
table
是保留字。最好不要使用它,但查询的正确语法是使用后引号(`):
$query = "select * from reservation where `table` = 1";
答案 1 :(得分:1)
table
是MySQL保留字。如果你想在查询中使用它作为列名,你需要把它放在反引号中(不像你那样用单引号):
$query = "select * from reservation where `table`=1";
答案 2 :(得分:0)
do a $db->query($query) or die(mysql_error());
由于SQL错误, $result
可能 false。
我假设你不能在int字段上做(从未尝试过),这应该让你知道为什么 MySQL 拒绝你的陈述。< / p>
答案 3 :(得分:0)
要回答您的第二个问题,您的代码比使用mysql_query
的其他人更新。你似乎在使用mysqli,这是一件好事。 mysql_query
等。已经过时多年,不建议用于任何新项目。