将数组插入数据库

时间:2012-09-20 18:31:10

标签: php mysql

我正在创建一个检查功能,使我能够检查数据库中是否已存在特定idcategoryid的数据:

$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 个答案:

答案 0 :(得分:1)

看起来$fields['Occupation']是一个数组,它将被categoryid=>?< category ID取代。如果每个类别一步一步地向数据库提出问题呢?

OR

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

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

答案 1 :(得分:0)

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

请改为尝试:

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

答案 2 :(得分:0)

您在查询中尝试做的事情并不完全清楚,因为您正在编写这些奇怪的值SET canid=?

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

删除array($emailCheck['id'], $fields['Occupation'])。然后设置$emailCheck['id'], $fields['Occupation'][0]。你的field['Occupation']就是整个数组,所以根据你的需要选择一些。

答案 3 :(得分:0)

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

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

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