mysql - Yii + MySQL 错误 1064

标签 mysql yii

我每次都会遇到语法错误:

$skills = SubSkills::model()->findAll(array('order'=>'number DESC','condition'=>'number > 0 AND user_id=:user_id AND select = 0', 'params'=>array(":user_id" =>1),'offset'=>0,'limit'=>2,
));

如果我去掉“select = 0”部分就可以了。

错误如下:

CDbCommand failed to execute the SQL statement: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select < 1 ORDER BY number DESC' at line 1

我认为发生这种情况是因为“SELECT”作为行名会与 MySQL 冲突。有办法避免这种情况吗?

谢谢!

最佳答案

Select 由 SQL 使用。如果您正在运行查询,请始终对列名称使用反引号:

$skills = SubSkills::model()->findAll(array('order'=>'number DESC','condition'=>'number > 0 AND `user_id` = :user_id AND `select` = 0', 'params'=>array(":user_id" =>1),'offset'=>0,'limit'=>2,
));

您使用双引号的解决方案也是解决此类冲突的有效解决方案。但我相信使用反斜线更常用,因为它提高了可读性。

关于mysql - Yii + MySQL 错误 1064,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17784467/

相关文章:

php - 如何根据标志字段 0/1 显示 "Yes/No"CGridView yii?

javascript - Yii 为 JavaScript 编码数组

C# 使用/连接到 webhost 中的 MySQL 数据库 (One.com)

python - 如何使用 MySQLdb 从 MySQL 创建 JSON 结构数组并控制 JSON 风格化字段名称?

mysql - 当列确实存在时没有这样的列错误

mysql - 在选择上截断

php - Yii - 如何从另一个模型获取数据

sql - Yii SQL CommandBuilder 获取随机结果

php - 如何检查模型是否具有特定属性?

mysql - 如何根据前一行在接下来的几行中插入值