我正在创建一个检查功能,使我能够检查数据库中是否已存在特定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']));
}
答案 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被选中。