関数を使用すべきでない技術的な理由は何ですか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拡張機能の比較。