2016-05-24 19 views
1

SQLデータベース内のユーザーの詳細を更新しようとしていますが、そのユーザーの行が存在しない場合はそのユーザー用に作成する必要があります(ユーザーあたり1人のみ) It's更新も挿入もしません。 以下のスクリプトがあります。SQL Update else insert not working

$sql = "IF EXISTS (SELECT * FROM user_details WHERE user_id = $user_id) 
UPDATE user_details SET work = $work, education = $education, location = $location, relationship = $relationship, phone = $phone, email = $email, website = $website, language = $language, skill = $skill, tumbkr = $tumblr, instagram = $instagram, skype = $skype, facebook = $facebook, youtube = $youtube, twitter = $twitter, about = $about, user_id = $user_id WHERE user_id = $user_id 
ELSE 
INSERT INTO user_details (work, education, location, relationship, phone, email, website, language, skill, tumblr, instagram, skype, facebook, youtube, twitter, about, user_id)"; 
    $q = $conn->prepare($sql); 
    $q->execute(); 
+4

をあなたが準備された文について学ぶ必要があります – Jens

+4

見上げて[重複するキー更新の挿入...](http://dev.mysql.com/doc /refman/5.7/en/insert-on-duplicate.html)構文を使用します。 –

+0

マージステートメントについて – Jens

答えて

1

次のように実行します。

INSERT INTO table_name (field1,field2) VALUES (val1,val2) ON DUPLICATE KEY UPDATE field_name=VALUE;

+1

この文が何をしているのか、文がどのような要件を満足する必要があるのか​​についての説明はありません。 – Shadow

+0

コードは簡単ですので、必要とは思わないと思います。 –

+0

特定の要件が満たされない限り、上記のコードは機能しないため、説明が必要です。とにかく、この質問はすでにSOに答えられています。 – Shadow