2016-05-24 3 views
1

Я пытаюсь обновить данные пользователей внутри базы данных SQL, однако, если строка этой дозы пользователя не существует, мне нужно создать ее для этого пользователя (только для каждого пользователя) Это просто не обновляя и не вставляя. Вот такой скрипт.SQL Update else Вставка не работает

$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

Этого требует объяснение, потому что вышеуказанный код не будет работать, если не будут соблюдены особые требования к ecrtain. Во всяком случае, на этот вопрос ответили manay раз уже на SO. – Shadow

Смежные вопросы