我有一个表单,显示mysql表中的一些图像和其他数据。使用单选按钮,所选图像的“厨房”字段变为3.我的工作正常,但表中只有一个值为3。我怎么能改变下面的代码,也可以将表中已有的3个更改为1值?
// if featured is checked, then set gallery field to 3
if(isset($_POST['featured'])){
$chk = (array) $_POST['featured'];
$p = implode(',',array_keys($chk));
$t = mysqli_query($link, "SELECT * FROM gallery WHERE id IN ($p)");
if ($t){
$q = mysqli_query($link, "UPDATE gallery SET gallery=3 WHERE id IN ($p)");
header('Location: galleryadmin.php'); exit();
}
else{
echo '<script type="text/javascript"> alert("Dog Has Not Been Featured, Try Again
Or Contact Site Developer") </script>';
}
}
有人可以帮忙吗?
答案 0 :(得分:3)
UDPATE yourtable
SET gallery = IF(id = $p, 3, 1)
对于id = $ p的记录,if
会返回3
。对于任何其他记录,它会返回1
,并且这些1
/ 3
值会被分配到图库字段。
这有点低效,如果你在一个非常大的桌子上,除了一条记录之外它将重写所有记录基本上具有之前记录的相同值。在性能方面,您可能最好使用事务和两个查询:
start transaction;
update yourtable set gallery=1 where gallery=3;
update yourtable set gallery=3 where id=$p;
commit;
理论上理论上只应改变两个记录:“旧”画廊-3,以及正在成为画廊-3的新画面。