$query = "START TRANSACTION;\n".$update.$insert."COMMIT;\n";
//print $query;
if (!$mysqli->multi_query($query)) {
echo "Multi query failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
// need to delay somehow until after the transaction is complete.
header('Location: ../seller-services.php?services=$'.$services);
Проблема, с которой я сталкиваюсь, заключается в том, что, когда я вызываю seller-services.php, только что внесенные транзакцией изменения еще не отражены в базе данных, поэтому запросы, которые я использую для создания выходных данных для seller-services.php, не обязательно видны , Если я нажму обновить, я увижу изменения. Я мог бы сделать некоторую жесткую задержку, например, секунду, но я бы предпочел синхронизировать выполнение php с транзакцией mysql. Если это возможно, пожалуйста, дайте мне знать.
Я не думаю, что тип запроса важен, но в случае, если вы хотели бы видеть часть этого запроса в более конкретной форме:
Внутри цикла я:
$insert .= "INSERT INTO SellerServices
(`id`, `Type`, `Details`, `Active`)
VALUES
('$id', '$type', '$details', '1')
ON DUPLICATE KEY UPDATE
`Details`='$details',
`Active`='1';\n";
$services .= "&$type";
Я думаю, что вы можете использовать свое воображение для отдыха
Вам просто нужно пройтись по каждому запросу, даже если вы ничего не делаете:
while ($mysqli->next_result()) {}
Других решений пока нет …