sql >> データベース >  >> RDS >> Mysql

PHPのmysql_関数が非推奨になるのはなぜですか?

    mysql拡張機能は古く、15年前にリリースされたPHP 2.0から存在しています(!!)。これは、過去の悪い慣習を捨てようとする現代のPHPとは明らかに異なる獣です。 mysql拡張機能は、MySQLへの非常に生の低レベルのコネクタであり、多くの便利な機能がないため、正しく適用するのが困難です。 安全な方法で;したがって、それは初心者にとっては悪いことです。多くの開発者はSQLインジェクションを理解しておらず、mysql APIは脆弱であるため、認識していてもそれを防ぐのは困難です。グローバルな状態(たとえば、暗黙的な接続の受け渡し)でいっぱいであるため、保守が難しいコードを簡単に記述できます。古いため、PHPコアレベルで維持するのは不当に難しいかもしれません。

    mysqli拡張機能ははるかに新しく、上記のすべての問題を修正します。 PDOもかなり新しく、これらすべての問題に加えて、さらに多くの問題を修正します。

    これらの理由*により、mysql拡張機能は将来削除される予定です。それは全盛期にその仕事をかなりひどくしました、しかしそれはそれをしました。時が経ち、ベストプラクティスが進化し、アプリケーションがより複雑になり、より最新のAPIが必要になりました。 mysqlは廃止され、一緒に生きています。

    これらすべてを考えると、理由はありません 慣性を除いてそれを使い続けるために。

    *これらは私の常識的な要約の理由です。公式ストーリー全体については、こちらをご覧ください: https://wiki.php.net/rfc/mysql_deprecation

    そのドキュメントからの選択の引用は次のとおりです:



    1. SQLServerサブクエリが複数の値を返しました。サブクエリが=、!=、<、<=、>、> =の後に続く場合、これは許可されません。

    2. MySQLでCASE..WHENを適切に使用するにはどうすればよいですか

    3. NOW()を日時データ型のデフォルト値として設定しますか?

    4. MySQLの複数の列とのMATCHAGAINST