簡體   English   中英

為什么當MySQL驅動程序執行查詢時,Codeigniters msqli驅動程序返回null作為查詢結果?

[英]Why does Codeigniters msqli driver return null as a query result while the mysql driver executes the query just fine?

我在1and1的托管服務器上,並且在當前項目中使用存儲過程。 為此,我必須使用mysqli作為數據庫驅動程序。

1and1希望根據我使用mysql(/tmp/mysql5.sock)或mysqli(/tmp/mysqld.sock)設置數據庫連接套接字。

當我將database.php設置為使用mysqli驅動程序和帶有相應套接字的主機名時,我的查詢將失敗,並且我將以下響應作為結果對象。

object(CI_DB_mysqli_result)#17(7){

[“ conn_id”] => bool(false)

[“ result_id”] => NULL

[“ result_array”] =>數組(0){}

[“ result_object”] =>數組(0){}

[“ current_row”] => int(0)

[“ num_rows”] => NULL

[“ row_data”] => NULL

}

我檢查了我的phpinfo,它告訴我mysqli已加載,其參數“ default_socket”為“ /tmp/mysqld.sock”。

我想念什么?

["conn_id"]=> bool(false)似乎根本沒有數據庫連接,對嗎? 如何在Codeigniter中使mysqli連接與1and1一起使用?

@edit:這是我嘗試執行的查詢之一:

function getStreetByReference ( $plz)
{

    $query = $this->db->query("SELECT strasse from dwh_strassen WHERE dwh_strassen.PLZ =  '$plz' GROUP BY dwh_strassen.strasse");
    $temp_result = array();
    foreach ( $query->result_array() as $row )
    {
         $temp_result [] = $row;
    }
    return $temp_result;
}

好的,長話短說,來自codeigniter的mysqli驅動程序不支持使用套接字。 至少我找不到合適的設置。

我已經在驅動程序類中添加了參數,現在可以使用了。

在/System/database/drivers/mysqli_driver.php中

if ($this->port != '')
        {
            return @mysqli_connect($this->hostname, $this->username, $this->password, $this->database, $this->port, $this->socket); // $this->socket is new, i've added the same variable in my database.php
        }
        else
        {
            return @mysqli_connect($this->hostname, $this->username, $this->password, $this->database);
        }

並在/application/config/database.php中

$db['live']['socket'] = "/tmp/mysql5.sock";

多數民眾贊成在這里。 我已經做了一些測試,即使phpinfo告訴我,mysqli的default_socket不是mysql5.sock,它也可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM