フレームワーク内のデータベース (MySQL) からの予期しないエラーを防ぐにはどうすればよいですか?
たとえば、ここには 2 つの Excel テーブルのアップロード関数があります。もちろん、2 つの場所で作成した Excel 受信データ処理メソッドは異なりますが、データベース内の一部のフィールドの名前を空にすることはできません。 2 か所の Excel ファイルが交互にアップロードされると、以下に示すように、この時点で SQL エラーが表示されます:
フィールドで受け取ったすべてのデータが空であってはいけないという対応する判断をデータベース内で行わなければならないとしたら、非常に面倒ではないでしょうか?
私のExcelテーブルアップロード機能は、1つの方法、つまり1対1にのみ対応しています。私の Excel 構造は異なるため、1 つのメソッドは 1 種類の Excel 構造処理に対応します。
そこで、ページにSQLエラーが表示されないようにする解決策を見つけたいのですが、アドバイスをお願いします。
フレームワーク内のデータベース (MySQL) からの予期しないエラーを防ぐにはどうすればよいですか?
たとえば、ここには 2 つの Excel テーブルのアップロード関数があります。もちろん、2 つの場所で作成した Excel 受信データ処理メソッドは異なりますが、データベース内の一部のフィールドの名前を空にすることはできません。 2 か所の Excel ファイルが交互にアップロードされると、以下に示すように、この時点で SQL エラーが表示されます:
フィールドで受け取ったすべてのデータが空であってはいけないという対応する判断をデータベース内で行わなければならないとしたら、非常に面倒ではないでしょうか?
私のExcelテーブルアップロード機能は、1つの方法、つまり1対1にのみ対応しています。私の Excel 構造は異なるため、1 つのメソッドは 1 種類の Excel 構造処理に対応します。
そこで、ページにSQLエラーが表示されないようにする解決策を見つけたいのですが、アドバイスをお願いします。
データベースエラーをブロックできないわけではありませんが、ブロックする必要はなく、さらに多くの問題が発生します。あるフィールドがNullにならないのは当然なので、どうしても書き込む場合、後の処理でここまで来たらどうするか?このことから、挿入を実行する前にデータの有効性をチェックしなかったことがわかります。アップロードされたデータはユーザーが入力したデータと同等であり、ダーティなデータが入力されるのを防ぐ必要があります。
通常の処理ロジックは次のとおりです。
CSV を 1 行ずつ読み取り、検証ルールを使用してデータを検証します。OK の場合は、$success に保存します。そうでない場合は、$bad に保存します。ビジネス ロジックに応じて、$bad が有効な場合は、$bad に保存します。空ではない場合、最初にリストが表示されてユーザーに尋ねられます。不正なデータが破棄されていることを確認し、データを直接走査して $success に挿入し、どのデータが挿入され、どのデータが処理されなかったのかに関するレポートを生成します。 。
複数の形式の CSV があるため、現在アップロードされている CSV が処理方法と一致しているかどうかを確認する必要があります。そうでない場合、実際に保存した場合はどうなるでしょうか。怠け者になることは本当にお勧めしません。
例外をキャッチするには、try {}catch (Exception $e){} を使用するだけです
フレームワークがある場合は、論理的に言えば、デバッグ モードを自動的にブロックできるはずです。
コード内の空のフィールドを手動でデフォルト値に設定したい場合は、自分でフィルターを作成し、フィルター内で空かどうかを判断できます。空の場合は、デフォルト値を指定します。
1. データベース設計時に 0 などのデフォルト値を定義できます。 2. このデータをプログラムに挿入するときは、user_id フィールドに値が設定されていることを確認します。
運用環境でこのフィールドを null にすることが許可されている場合は、テーブルを変更してください
許可されていない場合、エラー メッセージはデータに問題があることを示しており、無視するのは危険です。ソースデータを無礼に無視するのではなく、ソースデータが null でないことを確認する必要があります