我使用一个准备好的SQL语句:
SELECT `name` FROM `securities` WHERE `symbol`=? AND `type`=`C`
但是当我执行它时,我一直得到这个错误:
Column not found: 1054 Unknown column 'C' in 'where clause'
表是这样设置的:
+--------+-----------------------+------+------+
| symbol | name | type | used |
+--------+-----------------------+------+------+
| AED | UAE Dirham | C | 0 |
| ALL | Albanian Lek | C | 0 |
| ANG | Neth Antilles Guilder | C | 0 |
| ARS | Argentine Peso | C | 0 |
| AUD | Australian Dollar | C | 0 |
| AWG | Aruba Florin | C | 0 |
| BBD | Barbados Dollar | C | 0 |
| BDT | Bangladesh Taka | C | 0 |
| BGN | Bulgarian Lev | C | 0 |
| BHD | Bahraini Dinar | C | 0 |
+--------+-----------------------+------+------+
和我试图查询只是从它的名字。如何修复此错误?涉及绑定值的代码太长而无法发布,但基本上,它执行带有array($symbol)
的预处理语句。是否有一个SQL错误,我错过了?
值C
用反引号括起来。这应该只针对列名和表名,而不是值。
将其更改为引号,它应该可以工作:
SELECT `name` FROM `securities` WHERE `symbol`=? AND `type`='C'
在MySQL中被认为是列/表名。你要求MySQL做的是返回类型列中的值与C列中的值相同的所有行,你实际上想要的是一个单引号(或双引号)。ie .
SELECT `name` FROM `securities` WHERE `symbol`=? AND `type`='C'