Zend查询仅适用于反引号:何时需要反引号

时间:2013-06-20 03:07:24

标签: mysql zend-framework

好的,我有这个标准查询来获取用户的消息

$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)列,所以不同的地方

2 个答案:

答案 0 :(得分:3)

TO是mysql中的关键字。如果我们使用关键字作为字段名称,则必须将其括在反引号中以区分它不应该用作关键字

答案 1 :(得分:1)

您需要在标识符周围使用反向标记,这些标识符也是SQL保留字。

请参阅http://dev.mysql.com/doc/refman/5.6/en/reserved-words.html以获取MySQL中的保留字列表。

您还需要在包含国际字符,标点符号或空格的标识符周围使用反向标记。是的,SQL中允许使用这样的标识符,您只需要对它们进行分隔。