ドル ($) サインイン パスワード文字列が変数として解釈される
データベース アクセスは成功したにもかかわらず、PHP/MySQL Web アプリケーションとの接続の問題が発生した場合シェルと phpMyAdmin を介して同一の資格情報を使用する場合、コード内の潜在的な問題を考慮することが不可欠です。
問題の原因
このシナリオでは、パスワード文字列に次のものが含まれていました。ドル記号 ($)。PHP は変数として解釈します。その結果、アプリケーションは意図したパスワード「mypas$word」を送信する代わりに「mypas」をディスパッチし、データベース認証に失敗しました。
解決策
問題は解決されました。バックスラッシュ () を使用してドル記号をエスケープします。ただし、より信頼性が高く効率的な解決策は、PHP 変数処理を受けるべきでないパスワードやその他のデータに一重引用符文字列を使用することです。
ドル記号のエスケープ
使用ドル記号をエスケープするためのバックスラッシュにより、PHP は変数を置換する命令ではなく、リテラル文字としてそれを扱うことができます。このアプローチは適切ではありますが、追加の構文が発生し、ユーザー エラーが発生する可能性があるため、最適ではありません。
一重引用符文字列
一重引用符文字列は補間されず、そのまま扱われます。 。これは、PHP が特殊文字の処理や一重引用符文字列内の変数の展開を試行せず、保存する予定のデータを正確に保持することを意味します。
データベースに関する考慮事項
パスワードがデータベースから取得される場合も、同じ原則が適用されます。 PHP による誤解を防ぐために、パスワードはデータベース内で一重引用符で囲んで保存する必要があります。
ベスト プラクティス
この種の問題を回避するには、次のベスト プラクティスに従うことをお勧めします。
以上がパスワードにドル記号が含まれていると、PHP スクリプトが MySQL に接続できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。