好的,我有这个标准查询来获取用户的消息
$s=$this->select()->where("to=?",$user->id)->orWhere("from=?",$user->id);
它在to。
附近出现语法错误生成的sql
SELECT `messages`.* FROM `messages` WHERE (to='1')
在phpymysql
中也出错所以我发现在to和from周围使用反引号会让它消失
$s=$this->select()->where("`to`=?",$user->id)->orWhere("`from`=?",$user->id);
让我有点糊涂,因为我不需要在同一个数据库的另一个表中这样做
$select=$this->select()->where("city_id=?",$city->city_id);
//Works just fine w/o backticks
为什么?反击什么时候真的有必要?这三个都是INT(11)列,所以不同的地方
答案 0 :(得分:3)
TO
是mysql中的关键字。如果我们使用关键字作为字段名称,则必须将其括在反引号中以区分它不应该用作关键字
答案 1 :(得分:1)
您需要在标识符周围使用反向标记,这些标识符也是SQL保留字。
请参阅http://dev.mysql.com/doc/refman/5.6/en/reserved-words.html以获取MySQL中的保留字列表。
您还需要在包含国际字符,标点符号或空格的标识符周围使用反向标记。是的,SQL中允许使用这样的标识符,您只需要对它们进行分隔。