質問: phpでmysql_ *関数を使用しない方がよいのはなぜですか? なぜmysql_*関数を使うべきでないのかという技術的な理由は何ですか? (例:mysql_query()、mysql_connect()、mysql_real_escape_string())?たとえ彼らが私のサイトで働いていてもなぜ私は他の何かを使うべきですか?彼らが私のサイトで動作しない場合は、なぜ私はのようなエラーが表示されますか 警告:mysql_connect():そのようなファイルやディレクトリはありません
回答: 多くの理由がありますが、おそらく最も重要な理由は、これらの関数はプリペアドステートメントをサポートしていないため、安全でないプログラミング手法を促進することです。準備済みステートメントは、sqlインジェクション攻撃を防ぐのに役立ちます。mysql_*関数を使用するときは、mysql_real_escape_string()を通してユーザー提供のパラメーターを実行することを忘れないでください。 1か所だけで忘れた場合、または入力の一部だけをエスケープした場合は、データベースが攻撃を受ける可能性があります。pdoまたはmysqliでプリペアドステートメントを使用すると、このようなプログラミングエラーが発生しにくくなります。