2012-04-16 11 views
0

MySQLのINSERT INTOを使用してテーブルにデータを挿入しています。私はユーザー名や電子メールのようないくつかのユニークなフィールドを持っています。私はデータを挿入したいのですが、一意のフィールドが既に使用されている場合(つまり、既存のユーザー名を使用しようとしているとします)、アクションを実行します。MySQL:INSERT INTOで一意のフィールドが既に使用されている場合のアクションの実行方法

ページをリダイレクトする、またはセッションを設定します。現時点では、私のコードは挿入されたように動作しますが、フィールドが一意なので明らかに何もしません。私は下のコードを試しましたが、私は運がありません。

// Add the data to the table 'users' 
mysql_query("INSERT INTO users 
(username, password, email, dob, gender) VALUES('$username', '$cleansedPassword', '$email', '$dob', '$gender') ") 
or header('Location: index.php') ; 

header('Location: SignUp.php') ; 

答えて

3

よく私は、MySQLからエラーを返すには働いていないが、mysqlのクエリが成立しない場合にはエラーが返されます....あなたはそれが実際に追加されたり、エラーが返されたかどうかを確認するためにそれを使用して場合できエラーの場合 - それに応じてリダイレクトすることができます。それは私が知る限り正しい方法です

-1

にmysql_affected_rows - は、影響を受けた行の数がゼロの場合は、insert文が機能しなかったことを知って、直前のMySQLの操作で

の影響を受けた行の数を取得します。

mysql_query("INSERT INTO users 
(username, password, email, dob, gender) VALUES('$username', '$cleansedPassword', '$email', '$dob', '$gender')"); 

if(mysql_affected_rows() == 0){ 
    header('Location: index.php') 
}else{ 
    header('Location: SignUp.php') 
} 
+0

私はこのコードをどのように使っていますか? ; (mysql_affected_rows)== 0 {セッション開始}? –

+0

コードを確認 –

+0

制約がエラーを生成し、関数が0ではなく-1を返す場合、クエリはFAILとなるため、これは間違っています。適切な方法は、影響を受けた行をチェックするのではなく、クエリが成功するかどうかをチェックすることです。 –

関連する問題