我有一个SQL查询问题。我得到2复选框选择的结果。给我一个数组。我需要查询我的DB,以查看是否有一个语句对应于数组中的属性之一。但是我必须在两列中搜索。
下面是我的代码: $ids = join(',',$param);
$this->db->select('*');
$this->db->from('default_profiles');
$test = " 'motivation' IN (".$ids.") OR 'envies' IN (".$ids.")";
$this->db->where($test);
下面是我的错误:你有一个错误在你的SQL语法;未知列' 'motivation' IN (option3,option3)或'妒忌' IN (option3,option3)' IN 'where子句'
SELECT * FROM (default_profiles
) WHERE 'motivation' IN (option3,option3) OR 'envies' IN (option3,option3)
如果我删除or语句,它会工作,但它只搜索一列。
如果有人能帮我,那就太好了!用单引号更新编辑:我认为问题来自WHERE后面的引号,但我不知道如何删除它
MySQL不接受单引号来引用表名或列名,而是接受反引号。如果你有证件,你应该检查一下,否则你会有麻烦的。
PHP 5.3:if (!empty($param)) {
$db = $this->db;
array_walk($param, function(&$value) use ($db) {
$value = "'" . $db->escape($value) . "'";
});
$ids = join(',', $param);
$this->db->select('*');
$this->db->from('default_profiles');
$test = " `motivation` IN ($ids) OR `envies` IN ($ids)";
$this->db->where($test);
// ...
}
PHP 5.4: if (!empty($param)) {
array_walk($param, function(&$value) {
$value = "'" . $this->db->escape($value) . "'";
});
$ids = join(',', $param);
$this->db->select('*');
$this->db->from('default_profiles');
$test = " `motivation` IN ($ids) OR `envies` IN ($ids)";
$this->db->where($test);
// ...
}