Команда не синхронизирована, когда я запускаю хранимую процедуру! используя драйвер mysqli - PullRequest
1 голос
/ 22 марта 2012

Я использую Mysqli Driver.

Я получаю команду из синхронизации, когда я пытаюсь запустить хранимую процедуру. Я пытался

free_result();

это фрагмент моего кода, может ли кто-нибудь сказать мне решение?

function block()
{
    $qry = "CALL `sp_get_codes_by_block_id`(?)";
    $result = $this->db->query($qry, $this->getBlockId());
    $temp_array = array();
    $temp_array = $result;
    $result->free_result();
    return $result->result_array();
}

Ответы [ 3 ]

4 голосов
/ 03 апреля 2012

ну я на самом деле разобрался с ответом после множества мозговых штурмов и поисков.

   $qry = "CALL `sp_get_codes_by_block_id`(?)";
    $result = $this->db->query($qry, $this->getBlockId());
    mysqli_next_result($this->db->conn_id);
    return $result->result_array();
1 голос
/ 22 марта 2012

https://dev.mysql.com/doc/refman/5.0/en/c-api-multiple-queries.html говорит:

Многократная обработка результатов также требуется, если вы выполняете операторы CALL для хранимых процедур.

Т.е. вам нужно пройти через все наборы результатов с помощью mysqli :: more_results и освободите их всех.

0 голосов
/ 07 августа 2013

попробуй использовать

while(mysqli_next_result($this->db->conn_id)) {
    if($result = mysqli_store_result($this->db->conn_id)){
        mysqli_free_result($result);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...