2012-11-28 20 views
0

我試圖設置一個codeigniter網絡應用程序,我剛剛在服務器上完成。我在我自己的電腦上本地編寫它。但是,當我嘗試登錄時,我得到這兩個錯誤。mysql_real_escape字符串錯誤

遇到

一個PHP錯誤

嚴重:警告

消息:mysql_real_escape_string() [function.mysql實時逃逸字符串]:拒絕訪問用戶 'ODBC'@'localhost'(使用密碼:NO)

的:mysql/mysql_driver.php

行號:319



遇到

一個PHP錯誤

嚴重:警告

消息:mysql_real_escape_string() [function.mysql實時的逃逸字符串]:鏈接到服務器無法 建立

文件名:MySQL的/ mysql_driver.php

行號:319

任何人都知道問題是什麼?

+0

您是否在調用此函數之前或之後連接到數據庫? –

+1

我假設如果你修復你的數據庫連接字符串,這將消失 – asprin

+0

該函數使用最後一個數據庫連接句柄/資源(如果有的話)或在此函數的第二個參數中聲明的函數。使用此功能之前請確保它已經連接。 – inhan

回答

1

答案很簡單:mysql_ real _escape_string()(提示在名稱中)根據數據庫連接使用的接收字符集轉義字符串。爲了使用這個,你首先需要連接到一個MySQL服務器

自動加載數據庫類並讓它自動連接。它會解決你的問題。

+0

我自動加載數據庫庫和我沒有在我的代碼中的任何地方親自使用過mysql_real_escape_string。 – ninjacoder

+0

對註釋的更正:如果您根本沒有使用mysql_real_escape_string並且不需要數據庫訪問,請卸載數據庫連接器。它看起來像試圖連接,失敗並繼續正常。當然這是CodeIgniter的舊版本,因爲它執行此操作(並且依賴於不推薦使用的函數)... –

+0

我實際上使用codeigniter 2.1.3 – ninjacoder

0

檢查你的數據庫設置裏面..

application>config>database.php 
+0

我的設置是確定的。 – ninjacoder

4

首先確保您連接到你的數據庫

可以修改application/config/database.php

爲笨的設置,你應該使用

$this->db->escape() 

詳細信息和樣品可以在這裏找到 http://ellislab.com/codeigniter/user-guide/database/queries.html

+0

嗨,爲什麼編輯過這個答案? – Grumpy

+0

是的,我確定我已連接到數據庫,我甚至已自動加載數據庫庫,並且我沒有在我的代碼中的任何地方親自使用過mysql_real_escape_string。你不能看到錯誤來自本地CI數據庫驅動程序,而不是來自我自己的代碼。 – ninjacoder

2

我終於找到了導致問題的原因。正是這條線在數據庫中的config文件夾:

$db['mydb']['autoinit'] = FALSE; 

當我把它改爲:

$db['mydb']['autoinit'] = TRUE; 

它的工作!謝謝你們所有的建議,如果沒有你,不會這麼做!