簡體   English   中英

Foreach 循環內的 SQL 查詢僅運行一次-PHP

[英]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']); 語句負責刪除值,這就是您的循環運行一次的原因。

以下代碼避免了兩個代碼坑。

  • 取消設置 $_SESSION['device_id'][$idDev] 而不是 $_SESSION['devices_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM