0

我有一个多选下拉框,它为我生成一个这样的数组:

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

我的数据库结构是:

在此处输入图像描述

4

2 回答 2

1

如果我理解正确并$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));
}
于 2012-09-21T00:06:14.867 回答
0

您必须为每个值动态生成参数占位符

$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);
于 2012-09-21T17:46:04.597 回答