PHP で mysql_* 関数を使用すべきでないのはなぜですか? 質問する

PHP で mysql_* 関数を使用すべきでないのはなぜですか? 質問する

関数を使用すべきでない技術的な理由は何ですかmysql_*? (例: mysql_query()mysql_connect()またはmysql_real_escape_string())?

自分のサイトで機能するとしても、なぜ他のものを使用する必要があるのでしょうか?

私のサイトでは動作しないのに、なぜ次のようなエラーが表示されるのでしょうか?

警告: mysql_connect(): そのようなファイルまたはディレクトリはありません

ベストアンサー1

MySQL 拡張機能:

  • 積極的に開発されていない
  • 正式に非推奨PHP 5.5(2013 年 6 月リリース)時点。
  • されている削除されたPHP 7.0(2015年12月リリース) 以降
    • これは、2018年12月31日これは、サポートされている PHP のバージョンには存在しません。これをサポートするバージョンの PHP を使用している場合は、セキュリティ問題が修正されていないバージョンを使用していることになります。
  • OOインターフェースがない
  • サポートされていないもの:
    • 非ブロッキング、非同期クエリ
    • 準備された声明またはパラメータ化されたクエリ
    • ストアドプロシージャ
    • 複数のステートメント
    • 取引
    • 「新しい」パスワード認証方法 (MySQL 5.6 ではデフォルトでオン、5.7 では必須)
    • MySQL 5.1以降の新機能

これは非推奨であるため、これを使用するとコードの将来性が低下します。

準備済みステートメントがサポートされていないことは特に重要です。準備済みステートメントは、別の関数呼び出しで手動で外部データをエスケープするよりも、外部データをエスケープして引用するための、より明確でエラーが発生しにくい方法を提供するためです。

見るSQL拡張機能の比較

おすすめ記事