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

dev*_*t3r 4 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'");
Run Code Online (Sandbox Code Playgroud)

请帮忙.

Pup*_*pil 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'");
Run Code Online (Sandbox Code Playgroud)

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

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

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

解决这个问题的方法:

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

2)对于表,前缀数据库名称如:databaseName.tableName.

对于字段:前置表名称,如:tableName.fieldName.

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