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

mysql拡張機能は非推奨であり、将来削除される予定です。代わりにmysqliまたはPDOを使用してください。

    1. なぜこれが起こっているのですか?

      ext/mysql全体 PHP拡張機能。プレフィックスmysql_で名前が付けられたすべての関数を提供します 、PHPv5.5.0で正式に非推奨になりました およびPHPv7で削除 。

      もともとはPHPv2.0(1997年11月)でMySQL v3.20に導入され、2006年以降、新しい機能は追加されていません。新しい機能がないことと相まって、複雑なセキュリティの脆弱性の中でこのような古いコードを維持することは困難です。

      マニュアルには、2011年6月以降の新しいコードでの使用に対する警告が含まれています。

    2. どうすれば修正できますか?

      エラーメッセージが示すように、考慮できるMySQL拡張機能は他に2つあります。 MySQLi および PDO_MySQL 、ext/mysqlの代わりにどちらも使用できます 。どちらもv5.0以降PHPコアに含まれているため、これらの非推奨エラーをスローするバージョンを使用している場合は、ほぼ確実にすぐに使用を開始できます。インストールの手間をかけずに。

      それらはわずかに異なりますが、トランザクション、ストアドプロシージャ、プリペアドステートメントのAPIサポートなど、古い拡張機能に比べて多くの利点があります(これにより、最善の方法 SQLインジェクション攻撃 を打ち負かす )。 PHP開発者のUlfWendelは、機能

      Hashphp.orgには、ext/mysqlからの移行に関する優れたチュートリアルがあります。 PDOへ 。

    3. error_reportingを設定することで、非推奨エラーを抑制できることを理解しています。 php.iniE_DEPRECATEDを除外する :

      error_reporting = E_ALL ^ E_DEPRECATED
      

      そうするとどうなりますか?

      はい、そのようなエラーメッセージを抑制し、古いext/mysqlを引き続き使用することができます。 とりあえず延長。しかし、あなたは本当にこれをすべきではありません —これは、拡張機能が将来のバージョンのPHPにバンドルされない可能性があるという開発者からの最後の警告です(実際、すでに述べたように、PHP v7から削除されています)。代わりに、この機会にアプリケーションを今すぐ移行する必要があります。 、手遅れになる前に。

      この手法ではすべてが抑制されることにも注意してください E_DEPRECATED ext/mysqlに関係するメッセージだけでなく、メッセージ 拡張機能:したがって、アプリケーションコードに影響を与えるPHPへの他の今後の変更に気付かない可能性があります。もちろん、PHPのエラー制御演算子 -つまり関連する行の前に@ -ただし、これによりすべてが抑制されます E_DEPRECATEDだけでなく、その式によって発生したエラー

    どうしますか?

    • 新しいプロジェクトを開始しています。

      まったく理由はありません ext/mysqlを使用するには -代わりに、他のより現代的な拡​​張機能の1つを選択し、それらが提供するメリットのメリットを享受してください。

    • 現在ext/mysqlに依存している(独自の)レガシーコードベースがあります 。

      回帰テストを実行するのが賢明です。実際には何も変更しないでください (特にPHPのアップグレード)影響の可能性のあるすべての領域を特定し、それぞれの周りで計画し、ステージング環境でソリューションを徹底的にテストするまで。

      • 適切なコーディング慣行に従って、アプリケーションは緩く統合されたモジュール方式で開発され、データベースアクセス方法はすべて1つの場所に自己完結しており、新しい拡張機能の1つと簡単に交換できます。

        このモジュールを書き直して30分を費やし、他のより最新の拡張機能の1つを使用します。徹底的にテストします。後でさらに改良を加えて、それらが提供するメリットのメリットを享受することができます。

      • データベースアクセス方法はいたるところに散在しており、新しい拡張機能の1つと簡単に交換することはできません。

        現時点で本当にPHPv5.5にアップグレードする必要があるかどうかを検討してください。

        ext/mysqlの置き換えの計画を開始する必要があります それらが提供する利点の見返りを享受できるようにするために、他のより現代的な拡​​張機能の1つを使用します。また、データベースアクセスメソッドをよりモジュール化された構造にリファクタリングする機会として使用することもできます。

        ただし、緊急がある場合 PHPをすぐにアップグレードする必要がある場合は、当面は非推奨エラーを抑制することを検討してください。ただし、最初に、同様にスローされている他の非推奨エラーを特定してください。

    • ext/mysqlに依存するサードパーティプロジェクトを使用しています 。

      現時点で本当にPHPv5.5にアップグレードする必要があるかどうかを検討してください。

      開発者がこの特定の問題に関連する修正、回避策、またはガイダンスをリリースしたかどうかを確認します。または、そうでない場合は、この問題を彼らの注意を引くことによってそうするように彼らに圧力をかけます。 緊急がある場合 PHPをすぐにアップグレードする必要がある場合は、当面は非推奨エラーを抑制することを検討してください。ただし、最初に、同様にスローされている他の非推奨エラーを特定してください。

      回帰テストを実行することは絶対に不可欠です。




    1. クエリ制約で日付を正しく処理する方法

    2. インスタンス間でのバックアップの監視

    3. PG ::ConnectionBad:fe_sendauth:パスワードが提供されていません

    4. 2つのテーブルの結合でクエリを更新する