MySQL将带有空字符串的所有行作为where子句返回

时间:2011-10-04 15:07:36

标签: php mysql codeigniter casting

我在调试CodeIgniter活动记录时发现了这个问题,如下所示:

$this->db->from("table_name");
$this->db->where("field_name", "");
$result = $this->db->get()->result_array();

生成的查询是:

SELECT * FROM `table_name` WHERE `field_name` = 0;  // Returns all rows in table

即使将空字符串强制转换为0,我们也希望table_name之后出现空结果。field_name充满非空字符串值。但是,我从此查询中获取整个表。谁知道为什么?这根本不直观。

我在没有强制转换的情况下尝试了查询,并且它可以工作:

SELECT * FROM `table_name` WHERE `field_name` = "";  // Empty result

为什么演员阵容为0?


编辑:使用此替代CodeIgniter语法时,同样的强制转换为0:

$this->db->query('SELECT * FROM table_name WHERE field_name = ?', array(""));

1 个答案:

答案 0 :(得分:1)

如果您使用codeigniter

,请尝试使用以下内容
$this->db->where("field_name = ''");