【问题标题】:PHP MYSQLi Database not updatingPHP MYSQLi 数据库未更新
【发布时间】:2018-11-08 18:40:17
【问题描述】:

我花了 3 个晚上试图找出问题所在。它让我做噩梦。请帮忙。我认为我的代码已经很完美了。有人可以修复我的代码并告诉我有什么问题吗?

$sql = "SELECT py.idPembayaran, p.idPelajar, p.nama, b.namaBarangan, 
pb.kuantiti, b.harga, py.jumlahBayaran, py.statusPembayaran, 
py.statusPenghantaran, pb.tarikhPembelian FROM barangan b
INNER JOIN pembelian pb on pb.idBarangan = b.idBarangan
INNER JOIN pembayaran py on py.idPembelian = pb.idPembelian
INNER JOIN pelajar p on p.idPelajar = pb.idPelajar";

$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
// output data of each row

while($row = mysqli_fetch_assoc($result)) {

    echo '
    <form method="POST" action="purchaselist.php">

        <tr>
        <input type="hidden" name="idPembayaran" value="<?php echo $idPembayaran ?>">
            <td>'.$row["idPembayaran"].'</td>
            <td>'.$row["idPelajar"].'</td>
            <td>'.$row["nama"].'</td>
            <td>'.$row["namaBarangan"].'</td>
            <td>'.$row["kuantiti"].'</td>
            <td>'.$row["harga"].'</td>
            <td>'.$row["jumlahBayaran"].'</td>


            <td>
                <select name="statusPembayaran">
                    <option value="In process">In process</option>
                    <option value="Successful">Successful</option>
                </select>
            </td>

            <td>
                <select name="statusPenghantaran">
                    <option value="In process">In process</option>
                    <option value="Arrived">Arrived</option>
                </select>
            </td>

            <td>'.$row["tarikhPembelian"].'</td>
            <td><input type="submit" name="submit" value="Update"></td>
        </tr>
    </form>
    ';
}
}

if (!empty($_POST["submit"])) {

$idPembayaran = $_POST["idPembayaran"];
$statusPembayaran = $_POST["statusPembayaran"];
$statusPenghantaran = $_POST["statusPenghantaran"];

$sql = "UPDATE pembayaran SET statusPembayaran ='".$statusPembayaran."', statusPenghantaran ='".$statusPenghantaran."' WHERE idPembayaran = '".$idPembayaran."'";

if(mysqli_query($conn, $sql)) {

    echo "
        <script>
        alert('test');
        window.location.href = 'purchaselist.php';
        </script>
    ";
}
else {
    echo "Update error.";
}
}

我正在尝试更新表“pembayaran”,但它没有更新。 我只想更新两列,即该表中的“statusPembayaran”和“statusPenghantaran”。该值来自选择选项。

【问题讨论】:

  • echo "Update error."; 这对你没有帮助。请改用mysqli_error($conn) 并启用错误报告。
  • 感谢您的快速回复。但这不是问题。 if(mysqli_query($conn, $sql)) { 已执行,没有错误,但我按下按钮后数据库没有更新。
  • 也使用mysqli_affected_rows()
  • 另外,当您完成后,您可能希望将连接的 SQL 字符串换成准备好的语句。原样的代码容易受到 SQL 注入的影响。事实上,如果您的输入包含引号或撇号或其他 mySQL 语法之类的内容,您可能会因输入错误而中断查询

标签: php forms mysqli


【解决方案1】:

当您首先为字段idPembayaran 设置值时,您有...

<input type="hidden" name="idPembayaran" value="<?php echo $idPembayaran ?>">

此时$idPembayaran 未设置,它应该是$row["idPembayaran"],这是来自SELECT 的值...

<input type="hidden" name="idPembayaran" value="<?php echo $row["idPembayaran"]; ?>">

【讨论】:

  • 非常感谢兄弟。我现在可以安心睡觉了。终于有人解决了我的问题!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-04
  • 2015-01-31
  • 1970-01-01
  • 1970-01-01
  • 2016-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多