Что может быть причиной того, что мой php-код не запускается после вызова mysqli_multi_query? - PullRequest
1 голос
/ 30 сентября 2019

Я просто попытался использовать функцию «mysqli_multi_query» в своем php-коде (запросы разделяются точкой с запятой), и он правильно вставляет данные.

Я не получаю никакой ошибки после вызова "mysqli_multi_query". Но php-код под оператором «mysqli_multi_query» (простой эхо для тестирования) не достигнут.

Когда я заменяю «mysqli_multi_query» на «mysqli_query» внутри цикла, общий код php работает без проблем.

Это известное поведение или есть что-то еще, что мне нужно знать о "mysqli_multi_query"? Является ли mysqli выполняет несколько запросов асинхронно?

Извините, мой код находится на домашнем компьютере и не может разместить его здесь до конца следующей недели. Я проверил все запросы, вручную запустив на верстаке, и они отлично работают.

Я все еще могу это исправить, выполняя каждый запрос отдельно в цикле for, но надеюсь уменьшить количество обращений к базе данных и повысить производительность с помощью "mysqli_multi_query".

Я видел несколько похожих постовздесь, но никто из них не ответил должным образом на мой вопрос. Любая поддержка будет принята с благодарностью.

Код был что-то вроде этого.

<?php
$con=mysqli_connect("localhost","my_user","my_password","my_db");

if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$sql1 = "insert into test (testCol) values(1);";
$sql2 = "insert into test (testCol) values(2);";

mysqli_multi_query($con, $sql1.$sql2 ); /* data inserted properly in test table. No error. */

/* Any code below here is not reached. But when I used below commented queries instead of above (mysqli_multi_query), echo is called.

    mysqli_query($con, $sql1); 
    mysqli_query($con, $sql2); 

 */

echo "Success"; 

mysqli_close($con);
?>

1 Ответ

0 голосов
/ 30 сентября 2019

Да, это в основном то, что вы предполагаете. если вы смешаете mysqli_multi_query и mysqli_query, последние не будут выполнены!

код:

$mysqli->multi_query(" Many SQL queries ; "); //works
$mysqli->query(" SQL statement #1 ; ") // not works!

Единственный способ сделать это правильно:

$mysqli->multi_query(" Many SQL queries ; "); // works
while ($mysqli->next_result()) {;} // flush multi_queries
$mysqli->query(" SQL statement #1 ; ") // works!

Вам просто нужно использовать / сбросить результаты, чтобы остальная часть php-кода заработала.

...