我正在尝试从数据库中选择一个值,如果所有内容都只是数字,它会完美运行 - 但如果涉及到字母则无法正常工作。这是在OpenCart中。
我的专栏名为campaign_code
,其类型为VARCHAR
。
这是命令......
$campaign_id = $this->db->query("SELECT campaign_id FROM " . DB_PREFIX . "campaign WHERE campaign_code = ". $this->db->escape($campaign_code));
当$campaign_code
等于任何数字时,没关系。它按预期选择。
当它的字母或数字或字母的组合出现此错误时......
Uncaught exception 'ErrorException' with message 'Error: Unknown column '85f' in 'where clause'<br />Error No: 1054<br />SELECT campaign_id FROM oc_campaign WHERE campaign_code = 85f' in C:\xampp\htdocs\microcharity\system\database\mysqli.php:40
谢谢。
答案 0 :(得分:0)
您几乎可以通过提供所有细节来回答您自己的问题。
是的,当您提供WHERE col = 1
时,它将1
解释为整数,搜索此整数。当您提供WHERE col = something
时,它会搜索某些内容,例如WHERE id = id2
(如果您希望结果中某个列的值等于其他列,则会使用此值)。如果您想使用字符串进行搜索,则需要WHERE col = 'you string'
如果你谷歌例外,你可能会找到答案unknown column in where clause
答案 1 :(得分:0)
在integer
中使用where clause
时,您可以避免quotes
,但在使用字符串时,您必须将其用单引号括起来。
对于整数 -
$campaign_id = $this->db->query("SELECT campaign_id FROM '".DB_PREFIX."' WHERE campaign_code = ".$this->db->escape($campaign_code)."");
对于字符串 -
$campaign_id = $this->db->query("SELECT campaign_id FROM '".DB_PREFIX."' WHERE campaign_code = '".$this->db->escape($campaign_code)."'");