2013-07-10 19 views
1

我一直在使用本地Mac MAMP安裝phpdao2.6和另一個遠程紅帽Linux服務器罰款。我最近轉移到EC2亞馬遜Ubuntu的風味,並安裝了LAMP設置。從php一個Mysql連接錯誤,當在phpdao2.6使用參數

突然間,我發現我越來越MySQL連接錯誤,但並非總是如此:

[09-Jul-2013 21:09:11 Australia/Sydney] PHP Warning: mysql_real_escape_string(): Access denied for user 'ec2-user'@'localhost' (using password: NO) in /var/www/html/mycobber/class/sql/SqlQuery.class.php on line 40 

[09-Jul-2013 21:09:11 Australia/Sydney] PHP Warning: mysql_real_escape_string(): A link to the server could not be established in /var/www/html/mycobber/class/sql/SqlQuery.class.php on line 40 

我只有在我使用

得到的MyObjectMySqlExtDAO.class.php功能這些錯誤
$sql .= 'and ca.enabled = ? '; 

..... 

$sqlQuery = new SqlQuery($sql); 

$sqlQuery -> set('Y'); 

樣式語法。如果我將此語法更改爲...

$sql .= " and ca.enabled = 'Y' "; 

它工作正常。我不知道爲什麼會發生這種情況,我不想使用第二種方法,因爲輸入信息沒有被消毒。

我懷疑這個問題是某種PHP的設置。

在我使用的EC2實例:

php: 5.3.26 
apache: Apache/2.2.24 (Amazon) 

我的本地MAMP設置是

php: 5.4.10 
apache: Apache/2.2.23 (Unix) 

任何想法了嗎?

+0

這個錯誤表示你的密碼是錯誤的訪問被拒絕的用戶「EC2用戶」 @「localhost」的(使用密碼:NO) – Sundar

+1

到服務器的連接不能建立這個錯誤確認這東西出錯像主機名,用戶名,密碼 – Sundar

+0

可能重複[MySQLi&mysql \ _real \ _escape \ _string()錯誤](http://stackoverflow.com/questions/5080953/mysqli-mysql-real-escape-string - 錯誤) – Charles

回答

1

因此,轉義可以考慮當前連接字符集,mysql_real_escape_string需要到數據庫的活動連接。根據鏈接手冊頁面:

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

強調增加。

在此DAO庫中,通過調用ConnectionFactory::getConnection()打開連接。您需要確保在之前有一個活動連接執行佔位符替換。

請注意該庫的代碼質量存在問題。還使用已棄用的mysql_函數族進行硬編碼。你可能不應該依賴這個庫在未來的PHP版本中可用。

+0

嗨,查爾斯,是的,我注意到了這一點,但是在快速開發階段使用'從表格構建php對象'組件,稍後我會換出庫。感謝您的意見。 – sapatos