Уточнение того, чего я пытаюсь добиться: Обновите «имя пользователя», если есть запись с такой же электронной почтой -, но без имени. если у пользователя уже есть имя, то не вносите никаких изменений
У меня есть веб-сайт, где все пользователи могут быть «подписчиками, предпринимателями или инвесторами». Если подписчик (, у которого я ранее просил только адрес электронной почты ), решит загрузить бизнес-идею, то этот человек, вероятно, будет использовать тот же адрес электронной почты -, что и раньше, только на этот раз добавив имя. Поэтому я хотел бы ВСТАВИТЬ В, и если электронная -почта уже существует -, добавить имя, но только если там уже нет имени (, чтобы человек не мог просто перезаписать чужие данные ).
Я зашел так далеко:
mysql_query("
INSERT INTO users
(email, name)
VALUES
('".$epost. "', '".$namn. "')
ON DUPLICATE KEY UPDATE
name=VALUES(name) -->[if name == '', else do nothing...]
");
Теперь он заменяет текущее имя новым, если оно отличается.
Я искал «при дублирующем обновлении, если поле пусто» и нашел: http://forums.aspfree.com/sql-development-6/on-duplicate-key-update-but-only-if-value-isn-t-482012.html(слияние?)
при условии дублирования обновления ключа(ближе, но я не хочу обновлять его, если он отличается, только если поле пустое.)
http://bytes.com/topic/php/answers/914328-duplicate-key-update-only-null-values(если ввод пуст.. ну это не)
http://boardreader.com/thread/Insert_on_duplicate_key_update_only_if_c_can8Xachr.html(макет этой страницы сбил меня с толку)
http://www.digimantra.com/tutorials/insert-update-single-mysql-query-duplicate-key/(он просто обновляет)
Я думаю, это может быть своего рода тем, что мне нужно(?)http://thewebfellas.com/blog/2010/1/18/conditional-duplicate-key-updates-with-mysqlно у меня не получилось заставить это работать
Этот код:
mysql_query("UPDATE users SET name='".$namn."'
WHERE email='".$epost."' AND name =''");
обновляет имя, только если оно ранее было нулевым, и это то, что я делаю после , однако он не вставляет новую запись, если электронная почта еще не существует.
Мой стол
Так что я попробовал это:
mysql_query("
INSERT INTO users
SELECT email, 'victoria' FROM users
WHERE email='victoria@hejsan.se' ON DUPLICATE KEY UPDATE name = 'victoria'
");
и я попробовал это:
mysql_query("
INSERT INTO users
SELECT email, 'yay' from users
WHERE email='victoria@hejsan.se'
ON DUPLICATE KEY
UPDATE name = values(name)
");
из ответа @Fluffeh
но ничего не происходит. Я неправильно истолковал ответ?
Меня просто осенило, что если у кого-то уже есть учетная запись, у него также должен быть уже пароль, поэтому я просто попрошу их подтвердить свой пароль и убедиться, что я делаю вызов AJAX, пока они вводят свою электронную почту -чтобы увидеть, зарегистрирована ли электронная -почта :)Итак, это больше не проблема, и я думаю, что это решение, которое я выберу. !)