SQL语法复选框结果


SQL syntax checkbox result

我有一个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);
    // ...
}