コードがループするループがあり、すべてのループで別のサーバーに接続して、MySQLクエリを作成します。ただし、ループ/クエリの1つが最後まで到達できず、すべてのコードが中断する場合があります。ループでエラーが発生した場合、プロセスをスキップして次のループに移動する方法はありますか?
4 に答える
そのループ内で、接続を確認し、接続が確立されている場合は、ロジックを実行します。そのため、接続が確立されていない場合、ロジック部分はスキップされます。
「続行」を使用して、ループ内の次の項目にスキップします。
これはすべて、phpの組み込みのmysql、mysqli、またはサードパーティのライブラリを使用しているかどうかによって異なります。ただし、原則として、次のロジックをお勧めします。
- ループスタート
- 接続
- 接続を確認してください
- SHOW TABLESクエリを使用して欠落している可能性のあるテーブルを確認するか、スキーマ情報を保持しているmysqlデータベースに対して権限を確認してください。また、dbスキーマを選択する前にこれを実行して、 SHOWDATABASESを使用してスキーマが存在するかどうかを確認することもできます。
- テーブルが存在する場合は、それに対してロジックを実行して切断します。それ以外の場合は、ループの次の反復に移動し続けます
- ループ終了
問題のテーブルで行う作業によっては、 @ mysql_queryなどの@プレフィックスを使用してクエリからのエラーを抑制し、影響を受ける行の数を確認することもできます。選択を行う場合は、結果セットをチェックして、何かが戻ったかどうかを確認できます。@の使用は好きではありませんが、空の既存のテーブルからの選択や同様の状況が発生する可能性があることに注意してください。コードによっては奇妙な動作をします。試して/キャッチエラー制御フローを処理するためのより良いアプローチです。しかし、実際に例外をスローすることは、比較すると非常に遅いプロセスであり、すべての作業はあらゆる場所のデータベースへの接続を中心に行われるため、このループによって多くの例外がスローされる可能性がある場合は、さらに遅くすることはお勧めできません。 。また、ループ内のステップをスキップするためにそれを使用する場合、一部の人々がロジックに従うのは非常に難しい場合があります。したがって、@のようなものはここで受け入れられる可能性があります;)