«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как устранить ошибку «Команды не синхронизированы» в PHP/MySQLi при выполнении нескольких подготовленных операторов?

Как устранить ошибку «Команды не синхронизированы» в PHP/MySQLi при выполнении нескольких подготовленных операторов?

Опубликовано 8 ноября 2024 г.
Просматривать:734

How to Resolve the \

Ошибка синхронизации команд PHP

При запуске нескольких подготовленных операторов в PHP/MySQLi можно столкнуться с ошибкой «Команды не синхронизированы». sync, вы не можете запустить команду сейчас». Это происходит, когда последующие операторы пытаются выполниться, в то время как предыдущие данные результата остаются необработанными в буфере.

Чтобы исправить эту проблему, необходимо использовать функцию mysqli_free_result() для явного освобождения сохраненных данных результата перед выполнением следующего оператора. заявление. Кроме того, крайне важно вызывать функцию next_result() для объекта mysqli после выполнения каждого оператора, чтобы переместить внутренний указатель на следующий набор результатов.

В вашем конкретном примере кода ошибка возникает во время выполнения $stmt1, поскольку результат $stmt не очищается. Явно вызвав mysqli_free_result($stmt) и последующий вызов $mysqli->next_result(), вы можете гарантировать, что буфер будет очищен, а указатель сброшен для следующего оператора.

Пример модифицированного кода:

    $stmt->execute();
    $stmt->store_result();
    $stmt->bind_result($user_id, $username, $db_password, $firstname, $lastname, $salt);
    $stmt->fetch();

    $stmt->free_result();
    $stmt->close();

    while ($mysqli->more_results()) {
        $mysqli->next_result();
    }

    $stmt1 = $mysqli->prepare("SELECT privileges FROM delegations WHERE id = ? LIMIT 1");
    $stmt1->bind_param('s', $user_id);
    $stmt1->execute();
    $stmt1->store_result();
    $stmt1->bind_result($privileges);
    $stmt1->fetch();

    $stmt1->free_result();
    $stmt1->close();

Внедрив эти исправления, вы устраните ошибку «Команды не синхронизированы» и обеспечите беспрепятственное выполнение последующих подготовленных операторов.

Заявление о выпуске Эта статья перепечатана по адресу: 1729135816. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3