【问题标题】:Update Multi Row PHP with same value使用相同的值更新多行 PHP
【发布时间】:2017-06-22 09:41:33
【问题描述】:

我从一个表中检索多行并将它们显示在一个表中,如 -> Click here for view the image

在数据库中,“status”值设置为“pending”,所以我想选择几个学生并将“status”更改为“approved”,然后进行一次更新,更新我检查的每一行。

这是我上面图片的代码...

        <?php
        include("connection.php");


        echo "<table border='1'><tr>

        <td><strong>Student ID</strong></td>
        <td><strong>Student Name</strong></td>
        <td><strong>Kelompok</strong></td>
        <td><strong>Block</strong></td>
        <td><strong>Level</strong></td>
        <td><strong>House</strong></td>
        <td><strong>Status</strong></td>


        </tr>";
        $i=0;
        while ($ww=mysqli_fetch_array($query))
        {
            if ($i%2==0)
                $class="evenRow";
            else
                $class="oddRow";

            $id=$ww[0];
            $studentid=$ww[1];
            $name=$ww[2];
            $kelompok=$ww[8];
            $block=$ww[9];
            $level=$ww[10];
            $house=$ww[11];
            $status=$ww[14];



        echo "<tr>
            <input type=hidden name=applyid[] value=".$id."/>
            <td>$studentid</td>
            <td>$name</td>
            <td>$kelompok</td>
            <td>$block</a></td>
            <td>$level</td>
            <td>$house</td>
            <td>
                <input type=checkbox name=status[] value=".$id."approved checked> APPROVED <br>
            </td>
            </tr>"; 
        }
        $i++;
        echo "</table>";

        ?>

    <br>

    <a href="officerapplicationupdate.php?applyID=<?php echo $id; ?>"><input type="submit" value="Update"></a>
    </form>

    <br><br>  
    </table>

这是更新行的代码..

<?php

    include("connection.php");



    if(isset($_POST["submit"]) && $_POST["submit"]!="") {
        $idCount = count($_POST["status"]);
        for($i=0;$i<$idCount;$i++) {
            mysqli_query("UPDATE application SET apply_status='".$_POST["status"][$i]."'
            WHERE apply_id='".$_POST["applyid"]."'");
        }
    }

?> 

【问题讨论】:

  • 欢迎来到 Stack Overflow!我们是一个问答网站,而不是一个雇佣编码员的服务。请解释到目前为止您已经尝试过什么以及为什么它没有奏效。见:Why is "Can someone help me?" not an actual question?
  • 请注意,您的 ID 将始终相同,因为您引用了一个数组 => $_POST["applyid"] - 它应该是 $_POST["applyid"][$i]
  • @recycler 它仍然无法正常工作。没有错误,但是databse中的值仍然没有更新
  • 您的问题实际上是另一个问题 - 您应该为 html 代码中的字段使用唯一名称。所以 php 中的隐式数组 [] 在 html(或浏览器)中不受支持。最好在输入字段中使用 id: name=applyid[1] 或 name=applyid_1

标签: php mysql sql-update multi-query


【解决方案1】:

您可以准备您的语句并在之后执行它。可以这样做:

   $in = array();
    if(isset($_POST["submit"]) && $_POST["submit"]!="") {
        $idCount = count($_POST["status"]);
        for($i=0;$i<$idCount;$i++) {
         $in[] .= $_POST["applyid"][$i];
        }
    }
    mysqli_query("UPDATE application SET apply_status='approved' WHERE apply_id IN '".implode(",",$in)."'");

所以只需要一个查询。

你也可以总结其他apply_status的变化。

注意检查来自网页的输入以防止 SQL 注入!

【讨论】:

    猜你喜欢
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    • 2011-04-22
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多