这里我的错误是什么,显示SQL语法错误?

时间:2014-11-21 11:37:17

标签: php sql opencart

$upper = $this->db->query("SELECT * FROM " . DB_PREFIX . "setting WHERE key='ndz_limit_up'");
$lower = $this->db->query("SELECT * FROM " . DB_PREFIX . "setting WHERE key='ndz_limit_down'");

请帮忙。

1 个答案:

答案 0 :(得分:8)

因为key是MySQL保留的关键字。

http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

请对key一词使用后退。

$upper = $this->db->query("SELECT * FROM " . DB_PREFIX . "setting WHERE `key`='ndz_limit_up'");
$lower = $this->db->query("SELECT * FROM " . DB_PREFIX . "setting WHERE `key`='ndz_limit_down'");

避免此类问题的最佳方法是:

我们应该在创建DataBase表字段时检查MySQL保留关键字。

我们应该确保我们没有使用任何关键字作为我们的领域。

解决这个问题的方法:

1)对表和字段名称使用反引号(`)。

2)对于表格,请在数据库名称前加上:databaseName.tableName

对于字段:预先添加表名称,如:tableName.fieldName

这样,MySQL会解释所提供的不是MySQL保留关键字,而是数据库表或字段名。