Документация об ошибке, упомянутая в заголовке
Если вы получаете команды не синхронизированы; вы не можете запустить эту команду сейчас в своем клиентском коде, вы вызываете клиентские функции в неправильном порядке.
- Скорость / наилучшая практика сглаживания mysqli_multi_query ()
- Строгие стандарты: mysqli_next_result () ошибка с mysqli_multi_query
- Почему возникает эта ошибка PHP: «Строгие стандарты: mysqli :: next_result (): следующего набора результатов нет».?
- Как создать представление с помощью mysqli_multi_query?
- mysqli multi_query, за которым следует запрос
Это может произойти, например, если вы используете mysql_use_result () и попытаетесь выполнить новый запрос, прежде чем вы вызовете mysql_free_result (). Это также может произойти, если вы попытаетесь выполнить два запроса, которые возвращают данные, не вызывая mysql_use_result () или mysql_store_result () между ними.
Отсюда: http://dev.mysql.com/doc/refman/5.0/en/commands-out-of-sync.html
Но в первом запросе я не извлекаю данные из базы данных mysql, я просто вставляю. И во втором запросе я получаю данные из базы данных.
Вот мой код
$connection = mysqli_connect("localhost","username","password","tbl_msgs"); if(mysqli_connect_errno($connection)) { die("Failed to connect to MySQL: " . mysqli_connect_error()); } $query = "INSERT INTO users (total_comments, total_views) VALUES ({$total_comments}, {$total_views});"; $query .= "INSERT INTO msgs (notifications) VALUES ({$notifications})"; mysqli_multi_query($connection,$query);
До этого шага все прекрасно. Но когда я выполняю следующий запрос, он дает ошибку
$select_query = "SELECT * FROM msgs WHERE msg_id = {$msg_id}"; $result_set = mysqli_query($connection,$select_query); if(!$result_set) { die(mysqli_error($connection)); }
Здесь он Commands out of sync; you can't run this command now
ошибок Commands out of sync; you can't run this command now
Commands out of sync; you can't run this command now
. Я не могу понять эту ситуацию
Примечание. В запросе есть какая-либо проблема, я выполнил тот же запрос непосредственно в PHPMyAdmin, и он отлично работает.
В запросе есть результат:
mysqli_multi_query ($ соединение, $ запрос);
Вам нужно использовать / сохранить результат, прежде чем вы сможете продолжить следующий запрос после: Поскольку вы выглядите так, как будто вы действительно не заботитесь о первом наборе результатов, сделайте это после многократного запроса.
do { $result = mysqli_store_result($connection); mysqli_free_result($result); }while(mysqli_next_result());
Другой вариант – закрыть соединение и снова запустить его.
mysqli_close($connection); $connection = mysqli_connect("localhost","username","password","tbl_msgs");
Все зависит от ваших требований.