#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'");
}