花了一些時間對問題進行故障排除,從而使PHP / MySQL Web應(yīng)用程序無法連接數(shù)據(jù)庫??梢允褂猛耆嗤膽{據(jù)從shell和phpMyAdmin訪問數(shù)據(jù)庫,這沒有任何意義。原來密碼中帶有$符號:$_DB["password"] = "mypas$word";發(fā)送的密碼是“ mypas”,這顯然是錯誤的。解決此問題的最佳方法是什么?我用\逃脫了$$_DB["password"] = "mypas\$word";而且有效。我通常使用$string = 'test'字符串,這可能是我以前避免遇到這種情況的方式。這是正確的行為嗎?如果此密碼存儲在數(shù)據(jù)庫中并且PHP將其拔出怎么辦-會發(fā)生同樣的問題嗎?我在這里想念什么...
3 回答

子衿沉夜
TA貢獻1828條經(jīng)驗 獲得超3個贊
$_DB['password'] = 'mypas$word';
單引號字符串不會被處理,而是按原樣使用。除非特別需要$ variable或轉(zhuǎn)義序列(\ n,\ r等)替換,否則應(yīng)始終使用單引號字符串。它更快,更不容易出錯。

Cats萌萌
TA貢獻1805條經(jīng)驗 獲得超9個贊
PHP將變量插值$word
到字符串中mypas$word
,就像用雙引號表示的字符串文字的正常行為一樣。由于$word
可能是未定義的,因此所得的內(nèi)插字符串為mypas
。
解決方案是使用單引號。單引號字符串文字不進行變量插值。

德瑪西亞99
TA貢獻1770條經(jīng)驗 獲得超3個贊
其他答案一直有效,直到密碼中嵌入單引號為止。
失?。?/p>
$_DB['password'] = 'my'pas$word';
備擇方案:
如果沒有其他轉(zhuǎn)義字符,則可以使用來轉(zhuǎn)義$ \$
,例如
$_DB['password'] = "my'pas\$word";
或者,更容易轉(zhuǎn)義單引號,例如
$_DB['password'] = 'my\'pas$word';
- 3 回答
- 0 關(guān)注
- 466 瀏覽
添加回答
舉報
0/150
提交
取消