0

所以我一直在使用带有 codeigniter 的 mysql 驱动程序,但现在我需要执行存储过程并且需要 Mysqli 驱动程序。因为显然 mysql 驱动程序不支持存储过程。现在我可以执行存储过程但是本机会话管理器坏了。它不能将会话存储在 Ci_session 表中。给出以下错误

错误编号:2014

命令不同步;你现在不能运行这个命令

更新ci_sessionslast_activity= 1369672449, user_data= 'a:2:{s:9:\"user_data\";s:0:\"\";s:7:\"user_id\";s:1:\"1\" ;}' WHERE session_id= '1b29074ae286b900b02e410916d93f26'

文件名:F:\xampp\htdocs\project\system\database\DB_driver.php

行号:330

帮助!

4

1 回答 1

2

这是 Code Igniter 中 mysqli 驱动程序的一个已知/常见问题。_execute您可以通过将mysqli_driver.php 中的方法替换为以下内容来克服它:

public function _execute($sql)
{
    // Free result from previous query
    @mysqli_free_result($this->result_id);

    $sql = $this->_prep_query($sql);

    // get a result code of query (), can be used for test is the query ok
    $retval = @mysqli_multi_query($this->conn_id, $sql); 

    // get a first resultset
    $firstResult = @mysqli_store_result($this->conn_id);

    // free other resultsets
    while (@mysqli_next_result($this->conn_id)) {
        $result = @mysqli_store_result($this->conn_id);
        @mysqli_free_result($result);
    }

    // test is the error occur or not 
    if (!$firstResult && !@mysqli_errno($this->conn_id)) {
        return true;
    }

    return $firstResult; 
}

不想更改系统文件,我更进一步并按照此处的说明操作:https : //github.com/EllisLab/CodeIgniter/wiki/Extending-Database-Drivers 在应用程序/库中创建我自己的 MY_DB_mysqli_driver文件夹,然后将新_execute方法放入其中以覆盖父类中的原始方法。

于 2013-05-27T19:37:09.503 回答