2012-03-06 51 views
0

我的Code Igniter應用程序中有一個奇怪的錯誤。當我調用mysql_real_escape_string時,Code Igniter或PHP會發出此錯誤。爲什麼PHP試圖訪問我的本地主機數據庫?

<h4>A PHP Error was encountered</h4> 

<p>Severity: Warning</p> 
<p>Message: mysql_real_escape_string() [<a href='function.mysql-real-escape-string'>function.mysql-real-escape-string</a>]: Can't connect to local MySQL server through socket '/No-MySQL-hostname-was-specified' (2)</p> 
<p>Filename: helpers/formval_helper.php</p> 
<p>Line Number: 13</p> 

爲什麼簡單地調用mysql_real_escape_string觸發對我的本地主機數據庫的訪問?不是該函數只是格式化一個字符串?另外,我甚至沒有使用我的本地主機數據庫。

+1

爲什麼要在窗體幫助程序中調用'mysql_real_escape_string'以開始? – deceze 2012-03-06 05:52:51

+1

來吧,你有活動記錄和參數化查詢可用幾乎沒有努力,你爲什麼使用該功能?你爲什麼要在一個幫助器中放置一個DB方法? (理想情況下它應該放在模型中) – 2012-03-06 06:27:28

回答

1

mysql_real_escape_string的行爲部分取決於某些數據庫服務器設置,包括字符集。如果你想要一些通用的,使用addslashes,但請注意,它會給一些模糊的多字節字符集提供不正確的結果。

+2

請不要在'mysql_real_escape_string'上建議'addslashes'。後者在今天和這個年代已經非常糟糕,「addslashes」更糟。 – deceze 2012-03-06 05:52:10

1

錯誤說明了一切。

它說它無法連接到你的mysql服務器,無論你提供的憑據和服務器名稱!

在使用此功能之前,您需要首先連接到您的數據庫!它對MySql Server有一定的依賴性!

+1

我覺得有必要讓人們參考日誌? – Karma 2012-09-01 06:18:48

1

該函數具有第二個參數link_identifier。 這是文檔說的:

MySQL連接。如果未指定鏈接標識符,則假定由mysql_connect()打開的最後一個鏈接。如果沒有找到這樣的鏈接,它會嘗試創建一個,就好像調用mysql_connect()時沒有參數一樣。如果未找到或建立連接,則會生成E_WARNING級別錯誤

相關問題