2012-01-07 10 views
2

私は複数の列を持つMySQLテーブルを設定しました。そのうちの1つは一意のインデックスとして機能します。この列は私のフォーム入力の1つに対応しているので、行の重複を防ぐことができます。重複エントリのエラーを操作する - MySQLとPHP

PHPに慣れていない私の質問は、MySQLの重複エントリのエラーが発生したときに、カスタムメッセージを表示したり元のフォームに戻すことができるように、最も簡単な方法を教えてください。

私は、mysql_errnoheader();が行く方法だと推測していますが、私はどのように理解するのか苦労しています。

答えて

0

を願っていますあなたは、通常のユーザーが表示されmysql_errorを表示したくないので、カスタムメッセージが好ましいですここに。挿入または更新文でmysql_queryを使用している場合、成功した場合はtrueを返し、そうでない場合はfalseを返します。

は、あなたはそれを解決するために、このような何かを行うことができます。ユーザーが成功または失敗時にどこかにリダイレクトされるように

$query = "query goes here"; 
if(mysql_query($query)) { 
    echo "Success!"; 
} else { 
    echo "Data not submitted. Please try again."; 
} 

もちろん、これを修正することができます。 header関数を使用してユーザーをリダイレクトする場合は、関数が呼び出される前にページに出力されていないことを確認してください。

+0

これは私の 'mysql_errno'提案よりも確かに意味があります。 'SELECT'は' INSERT'よりも利点がありますか? – Ryan

+0

それはあなたが何をしたいかによって異なります。テーブルに新しい情報を挿入する場合は、 'INSERT'文を使用します。データベースから情報を取得する場合は、SELECT文を使用します。テーブル内の情報を更新する場合は、 'UPDATE'ステートメントを使用します。 [こちらは](http://www.tizag.com/mysqlTutorial/)mysqlを学ぶためのチュートリアルです。 –

+0

大丈夫です。あなたはばかげて助けになりました。どうもありがとう。 – Ryan

0

実際には2つの質問があります。

  1. 重複エラーを確認する方法。

  2. 表示方法何でもエラー、ユーザーに特定のものだけではありません。

最初は、INSERTよりもSELECTを使用したいと思います。 SELECTを使用して一意性をチェックし、エラーを発生させます。

POST/Redirect/GETパターンに従います。どこにでもリダイレクトするのではなく、フォームを含めて入力値を入力するだけです。

最後に、私はこのユーザーが提供する独自のフィールドに基づいて、あなたのレコードを識別するつもりはない

+0

最初の部分については、「SELECT * FROM WHERE .... 'のようなものを参照していると思いますか? – Ryan

関連する問題