PHP MYSQLi数据库未更新

时间:2018-11-08 18:40:17

标签: php forms mysqli

我已经尝试寻找问题了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”。该值来自选择选项。

1 个答案:

答案 0 :(得分: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"]; ?>">