[英]A multi-dimensional array insert and update into the database
我有一个多选下拉列表框,它为我生成了一个像这样的数组:
array(3) { [0]=> string(1) "1" [1]=> string(1) "6" [2]=> string(1) "7" }
我无法解决的是如何使多选下拉框插入更新并从数据库中选择或从中进行选择。 我似乎只有一个价值
我当前的代码情况是->上面的var_dump
是什么:
SELECT * FROM {table} WHERE canid=? AND categoryid=?", array($emailCheck['id'], $fields['Occupation'][0]));
更新声明:我该如何爆破?
UPDATE {table} SET canid=?, categoryid=? WHERE canid=? AND categoryid=?", array($emailCheck['id'], implode(',', $fields['Occupation']));
我的数据库结构是:
如果我正确理解并且$fields['Occupation']
包含从下拉列表中选择的多个值,则使用AND categoryid IN (?)
并使用implode将数组合并为这样的字符串: implode(',', $fields['Occupation'])
完整的代码如下所示:
myFunction("SELECT * FROM {table} WHERE canid=? AND categoryid IN (?)", array($emailCheck['id'], implode(',', $fields['Occupation'])));
更新
我认为在这种情况下,当您需要分别为每一行更改这些列时,最好在PHP中循环遍历数组并进行单独的查询:
for($i=0; $i<count($fields['Occupation']); $i++) {
$id = $fields['Occupation'][$i];
// here make query like before
myFunction("UPDATE {table} SET canid=?, categoryid=? WHERE canid=? AND categoryid=?", array($emailCheck['id'], $id));
}
您必须为每个值动态生成参数占位符
$params = array_merge(array($emailCheck['id']), $fields['Occupation']);
$catPlaceholders = '?'.str_repeat(',?',count($fields['Occupation'])-1);
myFunction("SELECT * FROM {table} WHERE canid=? AND categoryid IN ("
.$catPlaceholders.")", $params);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.