私は「電子メール」を含むいくつかのフィールドを取得し、「データ」という名前のテーブルを持つDBに投稿するフォームを構築しました。私はdb内の電子メールアドレスを重複させることはできませんが、すべてのフィールドが完全であることを確認するためにjQuery Validateプラグインを使用しています。DBの重複したエントリをチェックする方法は?
プラグインは、それはフィールドデータを検証する際に呼び出し、ここのコードだというスクリプトemails.php付属:
<?php
$request = trim(strtolower($_REQUEST['email']));
$emails = array('[email protected]', '[email protected]', '[email protected]');
$valid = 'true';
foreach($emails as $email) {
if(strtolower($email) == $request)
$valid = '"Thats already taken."';
}
echo $valid;
?>
このコードはリストされている電子メールをチェックしています。 DBをクエリして 'データ'テーブルを検索し、 '電子メール'をチェックして重複があるかどうかを確認し、もしあればエラーメッセージを投稿する方法はありますか?
また、サンプルの電子メールを使用するとスクリプトが動作するように見えるため、本質的に「動作しています」ということでDBを確認するだけです。
私は設計によってエラーをキャッチすることがエラーであると考えてきました。 (私は一意性に同意するが、エラーをキャッチすることは実際には最もクリーンな方法であるとは確信していない - 通常、2人のユーザーが同じ電子メールを挿入しようとした場合に、webbiedaveは+エラー処理を提案する。 – Unreason
特定の既知のエラーをキャッチすることは有効な設計です。すべてのエラーをキャッチして無視するのはエラーです。あなたが気に入らなければ、他の解決策があります。たとえば、MySQLではINSERT IGNOREを実行し、影響を受ける行の数を確認できます(0行はINSERTが失敗したことを意味します)。 – rustyx