codeigniter : Commands out of sync; you can't

2020-01-29 08:29发布

问题:

I applied all the possible answers but still same problem. also tried

$this->db->reconnect();

there is no problem in my query

MyCode:

public function GetdistributorsDetails($username){
        $sql = "SELECT u.FirstName, u.Email, u.Telephone, u.MobileNumber, u.AlternateMobileNumber, ud.Address1, ud.Pincode,ud.City,s.Statename FROM users u JOIN userdetails ud ON ud.UserId = u.UserId JOIN states s ON s.StateId = ud.StateId WHERE u.Username = ? ";
        $result = $this->db->query($sql,array($username));
        return $result->result_array();
    }

回答1:

add following code into /system/database/drivers/mysqli/mysqli_result.php

 function next_result()
 {
     if (is_object($this->conn_id))
     {
         return mysqli_next_result($this->conn_id);
     }
 }

then in model when you call Stored Procedure

$query    = $this->db->query("CALL test()");
$res      = $query->result();

//add this two line 
$query->next_result(); 
$query->free_result(); 
//end of new code

return $res;


回答2:

you can use this after call

mysqli_next_result( $this->db->conn_id );


回答3:

Just use this one if you use multiple query make in same function: $this->db->close();



回答4:

If your stored procedure returns more than one result, try to add this code between the queries:

$storedProcedure = 'CALL test(inputParam, @outputParam)';
$this->db->query($storedProcedure);    

$conn = $this->db->conn_id;
do {
    if ($result = mysqli_store_result($conn)) {
        mysqli_free_result($result);
    }
} while (mysqli_more_results($conn) && mysqli_next_result($conn));

$sql = 'SELECT @outputParam;';
$this->db->query($sql); 


标签: codeigniter