我很难弄清楚这一点:我的表中有一列称为“活动”,这是一个布尔值。现在,当我将一行设置为active = 1时,我希望将前一行设置为active = 0。我该如何实现?
这是我现在的代码,我必须添加什么?谢谢!
$sql = "UPDATE messages SET active=1 WHERE id=".$_GET['id']."";
编辑(完整代码):
<?php
include 'a_head.php';
include '../sql.php';
$sql = "SELECT id FROM messages WHERE active=1";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$prv = $row["id"];
}}
$sql = "UPDATE messages SET active=0 WHERE active=".$prv."";
$sql = "UPDATE messages SET active=1 WHERE id=".$_GET['id']."";
if ($conn->query($sql) === TRUE) {
echo "Message set <br /><a href=\"/\"><button>Back</button></a>";
} else {
echo "Could not update message.";
}
$conn->close();
include 'a_foot.php';
?>
答案 0 :(得分:-1)
经过修改,可以使用新的需求更新...
如果您首先运行“ active to 0”脚本,那么您应该只更新一个值?
$sql = "UPDATE messages SET active=0 WHERE active=1";
然后我们可以运行您的原始脚本以将新ID标记为有效
$sql = "UPDATE messages SET active=1 WHERE id=".$id."";
编辑 在这种情况下,我们应该先找到活动行的ID
$sql = "SELECT id FROM messages WHERE active=1";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$prv = $row["id"];
}}
然后将该ID应用于sql
$sql = "UPDATE messages SET active=0 WHERE active=".$prv."";
随后是您的原始更新
$sql = "UPDATE messages SET active=1 WHERE id=".$id."";