mysqli не возвращает поврежденные строки - PullRequest
1 голос
/ 13 января 2010

Может кто-нибудь сказать мне, что я делаю не так? Я не могу вернуть затронутые строки после того, как строка была удалена. Функция всегда возвращает int (0), даже если действие удаления было выполнено заранее. Я прочитал, где мне нужно было очистить или закрыть результаты, которые я сделал, но это все еще не работает. Отладка показывает эту ошибку: Команда не синхронизирована. В руководстве говорится, что для преодоления этого необходимо использовать $ result-> free. В моем случае это не работает.

    $res = db::query("CALL deleteUser('$phone')");

    if($res !== 1) {
        echo 'failed';
    } else {
        echo 'success';
    }

Это часть функции, в которой запрос выполняет свою работу.

    if(self::$instance->query($query) === false){
        throw new exception("Failed");
    } return self::$instance->affected_rows;

Ответы [ 2 ]

1 голос
/ 13 января 2010

При вызове хранимой процедуры или функции int(0) отмечает, что хранимая процедура завершилась без ошибок. Вам нужно будет выбрать количество строк, затронутых в хранимой процедуре, после чего ваша хранимая процедура вернет строки, затронутые выходной переменной.

0 голосов
/ 13 января 2010

При выполнении хранимых процедур MySQL в PHP бывают случаи, когда дополнительные данные отправляются с сервера, который у вас есть для получения. Это приведет к ошибке «Команды из синхронизации» . Я не могу точно вспомнить, почему, но я читал это на форумах MySQL давно. Вы можете очистить свои данные результатов примерно так:

while (self::$instance->next_result()) { }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...