如何在PHP中使用不同的数据更新2个不同的列?

时间:2018-11-28 19:22:57

标签: php sql mysqli

我很难弄清楚这一点:我的表中有一列称为“活动”,这是一个布尔值。现在,当我将一行设置为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';
?>

1 个答案:

答案 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."";