ホームページ  >  記事  >  バックエンド開発  >  データベース (MySQL) の予期しないエラーがページに表示されますか?

データベース (MySQL) の予期しないエラーがページに表示されますか?

WBOY
WBOYオリジナル
2016-08-04 09:21:121036ブラウズ

フレームワーク内のデータベース (MySQL) からの予期しないエラーを防ぐにはどうすればよいですか?
たとえば、ここには 2 つの Excel テーブルのアップロード関数があります。もちろん、2 つの場所で作成した Excel 受信データ処理メソッドは異なりますが、データベース内の一部のフィールドの名前を空にすることはできません。 2 か所の Excel ファイルが交互にアップロードされると、以下に示すように、この時点で SQL エラーが表示されます:

データベース (MySQL) の予期しないエラーがページに表示されますか?

  1. フィールドで受け取ったすべてのデータが空であってはいけないという対応する判断をデータベース内で行わなければならないとしたら、非常に面倒ではないでしょうか?

  2. 私のExcelテーブルアップロード機能は、1つの方法、つまり1対1にのみ対応しています。私の Excel 構造は異なるため、1 つのメソッドは 1 種類の Excel 構造処理に対応します。

そこで、ページにSQLエラーが表示されないようにする解決策を見つけたいのですが、アドバイスをお願いします。

返信内容:

フレームワーク内のデータベース (MySQL) からの予期しないエラーを防ぐにはどうすればよいですか?
たとえば、ここには 2 つの Excel テーブルのアップロード関数があります。もちろん、2 つの場所で作成した Excel 受信データ処理メソッドは異なりますが、データベース内の一部のフィールドの名前を空にすることはできません。 2 か所の Excel ファイルが交互にアップロードされると、以下に示すように、この時点で SQL エラーが表示されます:

データベース (MySQL) の予期しないエラーがページに表示されますか?

  1. フィールドで受け取ったすべてのデータが空であってはいけないという対応する判断をデータベース内で行わなければならないとしたら、非常に面倒ではないでしょうか?

  2. 私の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 でないことを確認する必要があります

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。