Я использую драйвер Mysqli.
Я получаю команду из синхронизации, когда я пытаюсь запустить хранимую процедуру. я пытался
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(); }
ну, я на самом деле понял ответ после многократного штурма и поиска мозга.
$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();
https://dev.mysql.com/doc/refman/5.0/en/c-api-multiple-queries.html говорит:
Обработка нескольких результатов также требуется, если вы выполняете инструкции CALL для хранимых процедур.
Т.е. вам нужно пройти все результирующие наборы через mysqli :: more_results и освободить их все.
попробуй использовать
while(mysqli_next_result($this->db->conn_id)) { if($result = mysqli_store_result($this->db->conn_id)){ mysqli_free_result($result); } }