无法找到获取结果的方法,sql请求很好,但在使用带有while循环的代码时,它会不断崩溃(HTTP ERROR 500)。
使用$row = $result->fetch_assoc();
时没有任何问题,但我必须循环更新每条记录。
$sql = "SELECT * FROM reservations WHERE statut = '1' AND NOW() BETWEEN dateAller AND dateRetour"; // requete sql sur les réservations validées dont la tranche horaire est en cours de validité
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
$sql = "UPDATE vehicules SET statut = '2' WHERE immat = '$row[immat]'";
$result = $conn->query($sql);
}
}
答案 0 :(得分:1)
您在循环中覆盖$result
,因此将在第二次迭代中调用->fetch_assoc()
语句的结果update
。你必须改为:
$sql = "SELECT * FROM reservations WHERE statut = '1' AND NOW() BETWEEN dateAller AND dateRetour"; // requete sql sur les réservations validées dont la tranche horaire est en cours de validité
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
$sql = "UPDATE vehicules SET statut = '2' WHERE immat = '$row[immat]'";
$result2 = $conn->query($sql);
}
}
答案 1 :(得分:0)
更改这些行
$sql = "UPDATE vehicules SET statut = '2' WHERE immat = '$row[immat]'";
$result = $conn->query($sql);
到
$sql = "UPDATE vehicules SET statut = '2' WHERE immat = '".$row['immat']."'";
$conn->query($sql);
您正在使用更新查询的结果覆盖$result
。您可能不需要此结果(至少您还没有使用它),因此您可以轻松删除该作业。
此外,您需要'
或"
才能通过密钥访问数组($row
)。
在你的情况下,你很幸运,它没有引号。
说明:
PHP看到一个名为immat
的常量。如果定义了常量,则返回该值,但未定义该值,PHP将回退到字符串"immat"
。
无论如何,使用引号总是更好的做法!
答案 2 :(得分:0)
尝试使用这个:
<?php
$sql = "SELECT * FROM reservations WHERE statut = '1' AND NOW() BETWEEN dateAller AND dateRetour";
$result = mysqli_query($conn,$sql);
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) {
$immat = $row["immat"];
$sql = "UPDATE vehicules SET statut = '2' WHERE immat = '$immat'";
$updateResult = mysqli_query($conn,$sql);
}
}
?>