2016-09-12 7 views
0

私は多くのカラムを持つテーブルを持っています。私はそのテーブルにデータを送信するPHPファイルを構築しようとしています。それが送信される前に、ユーザーの電子メールをチェックすることによってユーザーが既に存在するかどうかを確認する必要があります。私はどのようにクエリを修正するか分からない。私が使用しているときにsqlクエリが機能しません(BEGIN、ENDの場合)

これは、これは私は、これはエラーでphpMyAdminのに

IF NOT EXISTS (SELECT * FROM `users` WHERE userEmail = "[email protected]") BEGIN 
INSERT INTO `users`(`userPassword`, `userFirstName`, `userLastName`, `userSex`, `userEmail`, 
`userArea`, `userDate`, `userPicture`, `userPhoneNumber`, `userSkypeName`,`userDetails`, `userCategories`) 
VALUES ("password" , "fName", "Lname", 
"Male", "[email protected] " ,"abcx" , "28-12-2016","pic address", 
"09368157474", "skypeEmail" , "some details","abdjdgjsbsjsbsksb"); 
    END ; 

を試みたクエリである私のコード

<?php header('Content-Type: text/html; charset=utf-8'); 
$connection=mysqli_connect("localhost", "root", "", "users"); 

mysqli_query($connection,"SET character_set_client = utf8"); 
mysqli_query($connection,"SET character_set_connection = utf8"); 
mysqli_query($connection,"SET character_set_results = utf8"); 
// Check connection 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

$qry = "IF NOT EXISTS (SELECT * FROM `users` WHERE userEmail = $_post['userEmail']) BEGIN 
INSERT INTO `users`(`userPassword`, `userFirstName`, `userLastName`, `userSex`, `userEmail`, 
`userArea`, `userDate`, `userPicture`, `userPhoneNumber`, `userSkypeName`,`userDetails`, `userCategories`) 
VALUES ('" . $_POST["userPassword"] . "' , '". $_POST["userFirstName"] ."' , '". $_POST["userLastName"] ."', 
" . $_POST["userSex"] . ", " . $_POST["userEmail"] . " '" . $_POST["userArea"] . "' , 
'". $_POST["userDate"] ."' , '". $_POST["userPicture"] ."', 
" . $_POST["userPhoneNumber"] . ", " . $_POST["userSkypeName"] . " , '" . $_POST["userDetails"] . "', 
    '". $_POST["userCategories"] ."')" 
    END 
    ; 



mysqli_query($connection,$qry); 

mysqli_close($connection); 
echo $qry; 



?> 

です:

enter image description here

+1

beginがmysqlに書かれています何をしようとしていますか – Jens

+0

最初に選択しないと申し訳ありません@Jens – tanyaa

+0

私は彼のすべての詳細をユーザに追加しようとしていますが、すでに電子メールによってexsit。既にデータベースに同じ電子メールがある場合、彼はユーザーを追加しません@Jens – tanyaa

答えて

0

最も簡単な解決策は、になりますメールの欄にunique indexを作成します。ユーザーが既存の電子メールアドレスに登録する場合、一意のインデックスは挿入を防止します。返されたエラーを照会することで、ユニークなインデックス制約に違反していることが容易にわかります。したがって、以前に電子メールアドレスが使用されたことをユーザーに伝えます。

+0

どのようにクエリを変更する必要がありますか? – tanyaa

+0

ユニークなインデックスを作成するにはどうすればよいですか? – tanyaa

+0

お気に入りのMySQL管理プログラム(phpmyadmin、sqlyogなど)を使用するのが最も簡単です。それ以外の場合は、 'alter table'文を使用して一意索引を手動で追加する必要があります。 – Shadow

関連する問題