经过一番折腾,我让这个查询工作了——但它看起来很笨重,运行时感觉很慢。
我有一个名为 UserTable 的表,如果特定用户对该项目说“是”,则会填充一个名为“项目”的字段。我只想在该实例中将该项目的一行添加到 UserTable 中 - 换句话说,我不想在表中有很多 user_ID/Item/'no' 关系,只有 user_ID/Item/'yes'回应。
我已经构建了一些代码,向用户显示整个数据集,并允许他们更改他们的偏好,然后按更新。当它们更新时,会输出一个名为 $checkbox 的数组,其中包括它们已勾选为“是”的项目编号(例如“1”、“3”、“6”)。如果他们没有勾选任何内容,则 $checkbox 设置为 ""。
这是相关代码 - 正如我所说,它非常笨拙,在 FOREACH 中有一个 WHILE 以及两个验证 IF 语句。我可以摆脱一个(或两个!)循环并用 SELECT 类型命令替换吗?
foreach($checkbox as $value)
{if($value!="") {
$sql= "SELECT count(Item) as row_exists
FROM UserTable
WHERE Item = '$value' and
User_ID = '$current_user_id'";
$result = mysqli_query($mysqli,$sql) or die(mysqli_error($mysqli));
while ($iteminfo = mysqli_fetch_array($result)) {
If ((int)$iteminfo['row_exists']==0) {
$sql = "INSERT INTO UserTable
(User_ID,Item,Date) VALUES
('$current_user_id','$value',now() )";
$add_new_row = mysqli_query($mysqli,$sql) or die(mysqli_error($mysqli));
}
}
}
}
提前谢谢了。