[英]SQL query inside Foreach loop is running only once -PHP
我在 foreach 循环中运行查询,但由于某种原因它只运行一次。 我正在循环一个具有多个值的数组,并且我想运行该查询的次数与 arrays 的值一样多。
if (isset($_SESSION['dd']) && is_array($_SESSION['dd'])) {
$sql = "INSERT INTO rma_report (message, cus_id, acceptance) VALUES ('$cus_comment', '$cus_id', 3)";
if ($db->query($sql) === TRUE) {
foreach ($_SESSION['devices_id'] as $dev) {
$last_id = $db->insert_id;
$lastId = $last_id;
$sql2 = "INSERT INTO rma_device_list (rma_id, device_id) VALUES ('$lastId','$dev')";
if (mysqli_query($db, $sql2)) {
unset($_SESSION['device_id']);
exit;
} else {
echo "Error: " . $sql2 . "<br>" . mysqli_error($db);
}
}
}
}
从您的代码中删除exit
。 unset($_SESSION['device_id'])
因为您的$_SESSION['devices_id']
必须只有一个值。 这就是它运行一次的原因。
打印并检查$_SESSION['devices_id']
可能unset($_SESSION['device_id']);
语句负责删除值,这就是您的循环运行一次的原因。
以下代码避免了两个代码坑。
仅在出现错误时退出。
if (isset($_SESSION['dd']) && is_array($_SESSION['dd'])) { $sql = "INSERT INTO rma_report (message, cus_id, acceptance) VALUES ('$cus_comment', '$cus_id', 3)"; if ($db->query($sql) === TRUE) { foreach ($_SESSION['devices_id'] as $idDev => $dev) { $last_id = $db->insert_id; $lastId = $last_id; $sql2 = "INSERT INTO rma_device_list (rma_id, device_id) VALUES ('$lastId','$dev')"; if (mysqli_query($db, $sql2)) { unset($_SESSION['device_id'][$idDev]); } else { echo "Error: ". $sql2. "<br>". mysqli_error($db); exit; } } } }
看起来您尝试插入具有相同 ID 的记录:
$lastId = $last_id;
应该:
$lastId = $last_id + 1;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.