【发布时间】: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 语法之类的内容,您可能会因输入错误而中断查询