Php 如何更改每行中的字段?
我有一张像这样的桌子:Php 如何更改每行中的字段?,php,mysql,Php,Mysql,我有一张像这样的桌子: id :int title :varchar info :text container :int status :int 我有一些代码将“status”字段的值从1更改为2,反之亦然(1显示在站点上,2隐藏) 我现在需要做的是: 当我将状态更改为1时,“container”字段中具有相同值的每一行的“status”字段都将更改为2。网站应仅为每个容器显示一条记录 这是我将“状态”更改为1的代码 (isset($_POST[
id :int
title :varchar
info :text
container :int
status :int
我有一些代码将“status”字段的值从1更改为2,反之亦然(1显示在站点上,2隐藏)
我现在需要做的是:
当我将状态更改为1时,“container”字段中具有相同值的每一行的“status”字段都将更改为2。网站应仅为每个容器显示一条记录
这是我将“状态”更改为1的代码
(isset($_POST['show'])){
$chk = (array) $_POST['show'];
$p = implode(',',array_keys($chk));
$t = "SELECT * FROM example WHERE id IN ($p)";
$shown = $link->query($t);
if ($shown){
$q = "UPDATE example SET status = 1 WHERE id IN ($p)";
$show = $link->query($q);
}
有人能帮我修改这个代码来做我需要的事情吗
欢呼声给定一个由“id”标识的特定条目,该条目包含一个“容器”引用。 当此条目的状态设置为1时。具有相同“容器”引用的任何其他条目将其状态设置为2 这是非常未经测试的。。。猜猜列名
<?php
if (isset($_POST['show'])){
$chk = (array) $_POST['show'];
$p = implode(',',array_keys($chk));
$t = "SELECT * FROM example WHERE id IN ($p)";
$shown = $link->query($t);
if ($shown){
$currentContainer = $shown['container']; // all the records with this container
$currentId = $p; // must not change this record later
$q = "UPDATE example SET status = 1 WHERE id IN ($p)";
$show = $link->query($q);
$sql = "UPDATE example SET status = 2 WHERE container = '$currentContainer' AND id != $currentId";
$others = $link->query($sql);
}
}
由于我对您的代码不是很清楚,我做了一些假设:
$p
是一个id为的数组,其状态必须更改为1
数据库中具有相同容器的所有其他行的状态必须更改为2
$show
是具有行数据的关联数组
您不知道容器值,必须从数据库中检索它
以下代码的作用:
SELECT查询获取每个id的容器。
然后,对于每个id,容器用于将所有关联行更新为status=2
然后,第二个更新查询为指定的id设置status=1;
我还添加了一些转义以防止sql注入
(isset($_POST['show'])){
$chk = (array) $_POST['show'];
$p = array_keys($chk);
$t = sprintf("SELECT id, container FROM example WHERE id IN ('%s')", implode("','", mysql_real_escape_string($p)));
$shown = $link->query($t);
foreach($shown as $row) {
$q = sprintf("UPDATE example SET status = 2 WHERE container = %s", mysql_real_escape_string($row['container']));
$link->query($q);
$q = sprintf("UPDATE example SET status = 1 WHERE id = %s", mysql_real_escape_string($row['id']));
$link->query($q);
}
你的数据结构是错误的。在示例
表中,似乎有容器
的属性。您应该为容器
和加入信息(如状态
)创建一个单独的表。您能向我澄清一下吗“container”只是一个包含int(1、2或3)的字段。我有3个容器在我的网站上,你看,你喷了它,它们也是1,2和3