синтаксис if else mysql

#mysql

#mysql

Вопрос:

Кто-нибудь может мне помочь в этом синтаксисе? Я не знаю, что я делаю не так!

Когда я пытаюсь выполнить этот код:

 IF EXISTS(SELECT * FROM user WHERE user_username = '$user_username') 
THEN
UPDATE user SET user_name='$name',user_profession='$profession',user_address='$address',user_avatar='$NewImageName'
ELSE 
INSERT INTO user (user_name,user_profession,user_address,user_avatar) VALUES ('$name','$profession','$address','$NewImageName';
  

Я получаю следующую ошибку:

 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF EXISTS(SELECT * FROM user WHERE user_username = '111') THEN UPDATE user SE' at line 1
  

Я не знаю, что не так с этим кодом!

Комментарии:

1. @tsHunter да, он делает. dev.mysql.com/doc/refman/5.0/en/if.html

2. использовать insert .. on duplicate key update синтаксис

3. Я пытался UPDATE использовать таблицу, когда IF EXISTS часть имеет значение TRUE. В противном случае я хотел INSERT попасть в таблицу.

4. Мне не нужен ON DUPLICATE ключ.

Ответ №1:

Вы пробовали добавлять END IF после INSERT INTO... утверждения?

Комментарии:

1. Также должно быть ) перед ; в конце вашего оператора VALUES.

2. @NirmalyaGhosh Отлично! Если это ответило на ваш вопрос, не могли бы вы принять его в качестве ответа? Спасибо.

3. @NirmalyaGhosh Теперь я это вижу. Извините за это.

Ответ №2:

вам нужно ON DUPLICATE KEY

 INSERT INTO user (user_name,user_profession,user_address,user_avatar)
VALUES ('$name','$profession','$address','$NewImageName'
   ON DUPLICATE KEY
UPDATE user SET user_name='$name',
                user_profession='$profession',
                user_address='$address',
                user_avatar='$NewImageName'
  

у вас должен быть столбец user_name как UNIQUE

если он не уникален, сделайте это

 ALTER IGNORE TABLE user ADD UNIQUE (user_name);
  

Комментарии:

1. ему не нужен ON DUPLICATE KEY , ему нужен рабочий IF оператор. Вы предлагаете другое решение, но это не ответ, не так ли?

Ответ №3:

Следующий фрагмент кода сделал свое дело для меня:

 $result = mysql_query("SELECT * FROM user WHERE user_username = '$user_username'");
if( mysql_num_rows($result) > 0) {
    mysql_query("UPDATE user SET user_name='$name',user_profession='$profession',user_address='$address',user_avatar='$NewImageName' WHERE user_username = '$user_username'");
}
else
{
    mysql_query("INSERT INTO user (user_name,user_profession,user_address,user_avatar) VALUES ('$name','$profession','$address','$NewImageName') WHERE user_username = '$user_username'");
}