Php 1个查询能否更改表中2个条目的相同字段?
我有一个表单,显示mysql表中的一些图像和其他数据。使用单选按钮,选定图像的“厨房”字段将更改为3。我有这个工作正常,但在表中应该只有一个值3。如何更改下面的代码以将表中已有的任何3更改为1值Php 1个查询能否更改表中2个条目的相同字段?,php,mysql,Php,Mysql,我有一个表单,显示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_
// 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>';
}
}
//如果选中了featured,则将gallery字段设置为3
如果(isset($_POST['featured'])){
$chk=(数组)$_POST['featured'];
$p=内爆(',',数组_键($chk));
$t=mysqli_query($link,“从id所在的库中选择*”);
如果有的话($t){
$q=mysqli_查询($link,“更新库集库=3,其中id在($p)”);
标题('Location:galleryadmin.php');退出();
}
否则{
“echo”警报(“未显示狗的特征,请重试
或联系现场开发商”);
}
}
有人能帮忙吗
UDPATE yourtable
SET gallery = IF(id = $p, 3, 1)
对于id=$p的记录,if
返回3
。对于任何其他记录,它将返回1
,而那些1
/3
值将分配给gallery字段
这有点低效,如果你在一个非常大的表上,除了一条记录外,它会重写所有的记录,使其基本上具有与以前相同的值。就性能而言,最好使用一个事务和两个查询:
start transaction;
update yourtable set gallery=1 where gallery=3;
update yourtable set gallery=3 where id=$p;
commit;
理论上,这只会改变两项记录:“旧”gallery-3和即将成为gallery-3的新记录
对于id=$p的记录,if
返回3
。对于任何其他记录,它将返回1
,而那些1
/3
值将分配给gallery字段
这有点低效,如果你在一个非常大的表上,除了一条记录外,它会重写所有的记录,使其基本上具有与以前相同的值。就性能而言,最好使用一个事务和两个查询:
start transaction;
update yourtable set gallery=1 where gallery=3;
update yourtable set gallery=3 where id=$p;
commit;
理论上,这只会改变两项记录:“旧”gallery-3和即将成为gallery-3的新记录
对于id=$p的记录,if
返回3
。对于任何其他记录,它将返回1
,而那些1
/3
值将分配给gallery字段
这有点低效,如果你在一个非常大的表上,除了一条记录外,它会重写所有的记录,使其基本上具有与以前相同的值。就性能而言,最好使用一个事务和两个查询:
start transaction;
update yourtable set gallery=1 where gallery=3;
update yourtable set gallery=3 where id=$p;
commit;
理论上,这只会改变两项记录:“旧”gallery-3和即将成为gallery-3的新记录
对于id=$p的记录,if
返回3
。对于任何其他记录,它将返回1
,而那些1
/3
值将分配给gallery字段
这有点低效,如果你在一个非常大的表上,除了一条记录外,它会重写所有的记录,使其基本上具有与以前相同的值。就性能而言,最好使用一个事务和两个查询:
start transaction;
update yourtable set gallery=1 where gallery=3;
update yourtable set gallery=3 where id=$p;
commit;
理论上,这只会改变两条记录:“旧”gallery-3和即将成为gallery-3的新记录。谢谢@Marc B,我使用了第二个示例,因为一些记录在gallery字段中的值为2。这真是一种享受!谢谢@Marc B,我使用了第二个示例,因为一些记录在gallery字段中的值为2。这真是一种享受!谢谢@Marc B,我使用了第二个示例,因为一些记录在gallery字段中的值为2。这真是一种享受!谢谢@Marc B,我使用了第二个示例,因为一些记录在gallery字段中的值为2。这真是一种享受!