0

我正在创建一个检查功能,使我能够检查特定的数据id并且categoryid已经存在于数据库中:

$fields['Occupation'] = array(3) { [0]=> string(1) "1" [1]=> string(1) "6" [2]=> string(1) "7" }

有问题的线路:

$occCheck = Jojo::selectQuery("SELECT * FROM {refocus_candidate_category} WHERE canid=? AND categoryid=?", array($emailCheck['id'], $fields['Occupation']));

为什么会出现此错误以及如何解决:

Unknown column 'Array' in 'where clause'

全面检查功能

    if($occCheck != FALSE)
    {
        Jojo::updateQuery("UPDATE {refocus_candidate_category} SET canid=?, categoryid=? WHERE canid=? AND categoryid=?", array($emailCheck['id'], $fields['Occupation']));
    }else{
        Jojo::insertQuery("INSERT INTO {refocus_candidate_category} SET canid=?, categoryid=? WHERE canid=? AND categoryid=?", array($emailCheck['id'], $fields['Occupation']));
    }
4

4 回答 4

1

它看起来$fields['Occupation']是一个数组,它将被替换为categoryid=>?< category ID. 为每个类别一步一步地向数据库提出问题怎么样?

或者

$occCheck = Jojo::selectQuery("SELECT * FROM {refocus_candidate_category}
                               WHERE canid=".$emailCheck['id']."
                               AND categoryid in
                                 (".implode(",",$fields['Occupation']).")");

如果 $emailCheck['id']不是数组

于 2012-09-20T18:41:02.387 回答
0

您是否有特定原因将 an 传递Array...Query(函数而不是单独的参数?PHP 将一个参数传递给数据库 - 数据库将其解释为字符串 - 因此您的查询实际上是在搜索单词“Array”。

试试这个:

$occCheck = Jojo::selectQuery("SELECT * FROM {refocus_candidate_category}".
                              " WHERE canid=? AND categoryid=?",
                              $emailCheck['id'], $fields['Occupation']);
于 2012-09-20T18:40:16.737 回答
0

当您正在编写这些奇怪的值时,您在查询中尝试做什么并不完全清楚SET canid=?

但是您面临的问题是,您在 SQL 查询字符串中连接整个数组。尝试echo一个数组,然后你会看到它被打印为Array. 这就是您的问题查询的来源被扩展为someField=Array. 现在它Array甚至不在单引号中,所以 mysql 假设它是一个列。因此你的错误。

删除那个array($emailCheck['id'], $fields['Occupation'])。并且刚刚设置$emailCheck['id'], $fields['Occupation'][0]。你的field['Occupation']是和整个阵列,所以根据你的需要选择一些。

于 2012-09-20T18:40:50.197 回答
0

您必须确定要查询的职业:

$occCheck = Jojo::selectQuery("
   SELECT * FROM {refocus_candidate_category} WHERE canid=? AND categoryid=?",
   array($emailCheck['id'], $fields['Occupation'][1]));

在这种情况下,我使用索引为 1 的职业,这将导致选择职业 6。

于 2012-09-20T18:42:03.430 回答