0

我的 SQL 查询有问题。我得到了 2 个复选框选择的结果。这给了我一个数组。我需要查询我的数据库以查看是否有与数组中的一个属性相对应的语句。但我必须在两列中搜索。

这是我的代码:

    $ids = join(',',$param);  
    $this->db->select('*');
    $this->db->from('default_profiles');
    $test = " 'motivation' IN (".$ids.") OR 'envies' IN (".$ids.")";
    $this->db->where($test);

这是我的错误:您的 SQL 语法有错误;'where 子句'中的未知列 ''motivation' IN (option3,option3) OR 'envies' IN (option3,option3)'

SELECT * FROM ( default_profiles) WHERE `'动机' IN (option3,option3) OR 'envies' IN (option3,option3)

如果我删除 or 语句它可以工作,但它只搜索一列。

如果有人可以帮助我,那就太好了!

用单引号更新编辑:我认为问题来自 WHERE 之后的引号,但我不知道如何删除它

4

1 回答 1

0

MySQL 不接受单引号来引用表或列名,但需要反引号。你应该检查一下,如果你有任何 id,否则你可能会遇到麻烦。

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);
    // ...
}
于 2013-05-28T13:48:32.007 回答