未捕获的异常' ErrorException'在尝试使用字母时从数据库中进行选择时

时间:2014-04-17 13:36:16

标签: php mysql

我正在尝试从数据库中选择一个值,如果所有内容都只是数字,它会完美运行 - 但如果涉及到字母则无法正常工作。这是在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

谢谢。

2 个答案:

答案 0 :(得分:0)

您几乎可以通过提供所有细节来回答您自己的问题。

是的,当您提供WHERE col = 1时,它将1解释为整数,搜索此整数。当您提供WHERE col = something时,它会搜索某些内容,例如WHERE id = id2(如果您希望结果中某个列的值等于其他列,则会使用此值)。如果您想使用字符串进行搜索,则需要WHERE col = 'you string'

等引号

如果你谷歌例外,你可能会找到答案unknown column in where clause

MySQL: Unknown column in where clause error

答案 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)."'");