[英]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.