Php 将数组插入数据库

Php 将数组插入数据库,php,mysql,Php,Mysql,我正在创建一个检查功能,使我能够检查数据库中是否已经存在具有特定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=?

我正在创建一个检查功能,使我能够检查数据库中是否已经存在具有特定
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'
为什么会出现此错误以及如何解决:

$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']));
    }

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

请尝试以下方法:

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

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

但是您面临的问题是,您正在SQL查询字符串中包含整个数组。尝试
回送
一个数组,然后您将看到它被打印为
数组
。这就是问题查询的来源,它被扩展为
someField=array
。现在
数组
甚至不在单引号中,所以ysql假设它是一个列。因此您的错误


删除
数组($emailCheck['id'],$fields['occulation'])
。只需设置
$emailCheck['id'],$fields['occulation'][0]
。您的
字段['occulation']
是一个完整的数组,所以请根据需要选择一些。

它看起来像是
$fields['occulation']
是一个数组,它将被
categoryid=>?
替换。对每个类别一步一步地执行该操作如何向数据库提问


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

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

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

在本例中,我使用了索引1的职业,这将导致选择职业6。

@Shades88为什么我会出现错误&我如何修复检查我的答案,希望这可能会有帮助我需要检查是否有任何职业选项与我的id匹配-如果有,我想插入新选项,否则插入批次。我获取输入数组没有t match?:从
refocus\u candidate\u category
WHERE canid='11'和categoryid=SELECT*从
refocus\u candidate\u category
WHERE canid=?和categoryid=?嘿,我现在得到的输入数组不匹配?:从
refocus\u canid='11'和categoryid=SELECT*中选择*FROM
refocus_candidate_category
其中canid=?和categoryid=?为什么?它也插入了一个值,但只有一个值。看起来该函数在内部对传递给它的数组参数做了一些操作。然后尝试
数组($emailCheck['id'],$fields['Occupation'][0])
I now get Input Array not match?:UPDATE
refocus_candidate_category
SET canid=11',categoryid=1',其中canid=UPDATE
refocus_candidate_category
SET canid=?,categoryid=?其中canid=?和categoryid=?Array([0]=>11[1]>1)尝试
Array($emailCheck['id'],$fields['accountry'],$fields[“职业”][0])
…只是一个随机猜测。猜测的原因是,您的sql查询字符串中有4个占位符。您的函数可能试图用输入数组元素替换它们。在输入数组中,我们只指定了2个,让我们尝试将4INSERT放入
重新聚焦候选对象\u类别
设置canid=?,categoryid=?其中canid=?和categoryid=?数组([0]=>11[1]=>8[2]=>11[3]=>8)您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册,以了解第1行的“WHERE canid='11'和categoryid='8''附近要使用的正确语法。我需要检查它们是否都存在。获取的输入数组不匹配吗?:UPDATE
refocus_候选者_category
SET canid='11',categoryid=Array WHERE canid=更新
refocus\u candidate\u category
SET canid=?,categoryid=?WHERE canid=?和categoryid=?数组([0]=>11[1]=>Array([0]=>1[1]=>6[2]=>7)),您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以获取第1行(5)附近使用的正确语法Jess:正如我写的,在数组中使用where操作符并将数组内爆为一组ID