при выполнении следующего кода я сталкиваюсь с ошибкой 2014: «команды не синхронизированы; вы не можете запустить эту команду сейчас»
$newConnection = new mysqli("127.0.0.1", username, password, "", 3306);
$nativeQueryResult = $newConnection->multi_query ("SELECT 1;");
Но я не получаю ту же ошибку при использовании обычного запроса вместо нескольких запросов, например
$nativeQueryResult = $newConnection->query ("SELECT 1;");
Насколько я понимаю, эта ошибка заключается в том, что она возникает, когда результаты предыдущего запроса по тому же соединению не были освобождены, но поскольку это новое соединение, я не думаю, что это все еще будет применяться?
РЕДАКТИРОВАТЬ: Обратите внимание, что я не выполняю несколько вызовов multi_query, это не является дубликатом других распространенных проблем с этим поведением. Это первый запрос нового соединения.
РЕДАКТИРОВАТЬ: Версии программного обеспечения: OSX 10.10.2, PHP 5.5.19, MySql 5.6.22
Обнаружил проблему, проще говоря: проблем нет …
Сообщение об ошибке, о котором я сообщал, было получено в результате проверки переменных подключения mysqli, в то время как сценарий был остановлен на точке останова непосредственно после выполнения запроса.
Однако если я выведу эти переменные (например, «error», «errno»), они НЕ будут содержать значения, которые, как утверждал мой IDE, они сделали.
После циклического просмотра всех результатов запроса и освобождения объектов mysqli_results ошибка, которую можно просмотреть через IDE, исчезает, и это заставляет меня поверить, что это проблема с тем, как IDE захватывает эти переменные, и отображает ложную ошибку.
После этого открытия я выполнил свой запрос непосредственно через клиент MySQL и обнаружил, что в нем была другая синтаксическая ошибка, которая и вызывала настоящую проблему, ошибка 2014 года просто маскировала реальную проблему.
Спасибо всем за помощь, я использую Netbeans 8.0.2 (сборка 201411181905), и если кто-нибудь знает, будет ли такое поведение в других IDE, я бы хотел услышать об этом.
Других решений пока нет …