美元($) 登入密碼字串被誤解為變數
儘管成功存取資料庫,但遇到PHP/MySQL Web 應用程式的連線問題透過shell 和phpMyAdmin 使用相同的憑證,必須考慮程式碼中的潛在問題。
問題原因
在這種情況下,密碼字串包含美元符號 ($),PHP 將其解釋為變數。因此,應用程式沒有發送預期的密碼“mypas$word”,而是發送了“mypas”,導致資料庫身份驗證失敗。
解決方案
問題已解決透過使用反斜線 () 轉義美元符號。然而,更可靠、更有效率的解決方案是對密碼和其他不應經過 PHP 變數處理的資料使用單引號字串。
轉義美元符號
使用轉義美元符號的反斜線允許 PHP 將其視為文字字符,而不是替換變數的指令。這種方法足夠了,但不是最佳的,因為它引入了額外的語法和潛在的使用者錯誤。
單引號字串
單引號字串不會被內插,而是逐字處理。這意味著 PHP 不會嘗試處理特殊字元或擴充單引號字串中的變量,從而確保保留要儲存的確切資料。
資料庫注意事項
如果從資料庫擷取密碼,則適用相同的原則。密碼應儲存在資料庫中的單引號字串中,以防止 PHP 進行任何誤解。
最佳實踐
為了避免此類問題,它建議遵循以下最佳實踐:
以上是為什麼當密碼包含美元符號時,我的 PHP 腳本無法連接 MySQL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!