5

MySQL から MySQLi に切り替えたいのですが、非常に大きな Web サイトを持っています。

https://wikis.oracle.com/display/mysql/Converting+to+MySQLiが私を助けることができると読み、この mysql を mysqli に変更するにはどうすればよいですか? を読みました。. 関数に「i」を追加するだけでほとんどの関数を置き換えることができ、バグハンティングを開始する必要があると書かれています。

しかし、私の Web サイトは非常に複雑で大規模であり、すべてが機能するかどうかを確認するには非常に長い時間がかかります。では、非常に大規模な Web サイトで MySQL から MySQLi に切り替える最良の方法は何でしょうか?

ありがとう!

4

2 に答える 2

4

あなたの質問に対する簡単な答えはありません。実際にこれを行う簡単な方法はすべて、アプリケーションが作成されたときとは異なる方法で行う必要があるからです。

コード全体で mysql_* 関数への直接呼び出しがあり、ヘルパー クラスまたは関数を介してクエリを実行するデータベース抽象化レイヤーがない場合は、すべてのコマンドを編集する必要があります。

mysql_query のようなコマンドに i を追加するだけではうまくいきませんmysqli_query()。最初のパラメーターが db へのリンクであることが手続き的に必要でありmysql_query()、接続が与えられた場合、それは 2 番目のパラメーターでした。

単に mysql_query(...) を mysqli_query($link,.....) に変更する代わりに、db 抽象化レイヤーを配置するのにこれ以上の時期はないことをお勧めします。したがって、実際にクエリを処理する sql_query() などの関数を使用してください。将来、DB を再度変更する必要がある場合は、1 つの抽象化ファイルで db 固有のコマンドを更新するだけで済みます。そうすれば、mysqli_query をラップする関数を作成する場合、単純に mysql_query() の名前をヘルパー関数に変更して、ヘルパー関数にリンクの配置を心配させることができます。

これが最も簡単な方法ですが、SQL インジェクションの脆弱性を防ぐ主な要因であるパラメーターをバインドしたり、ステートメントを準備したりしません。

これらすべてのコマンドを変更したら、テストする必要があります。

自動化されたテストを作成していない場合は、おそらくこれが作成を開始するのに適した時期です。すべての変更が機能していることを確認する必要がありますが、自動化されたテストでそれを行うと、将来その苦痛を避けることができます.

于 2013-07-18T11:01:23.337 に答える
-1

mysql_* 関数は最新の php バージョンでは非推奨になっているため、正しい動きをしています。この目的のためにコンバータをダウンロードする必要があります... これを見てダウンロードしてください... mysql to mysqli

于 2013-07-18T10:54:41.043 に答える