при дублировании записи добавить имя, если php mysql пуст

Уточнение того, чего я пытаюсь добиться: Обновите «имя пользователя», если есть запись с такой же электронной почтой -, но без имени. если у пользователя уже есть имя, то не вносите никаких изменений

У меня есть веб-сайт, где все пользователи могут быть «подписчиками, предпринимателями или инвесторами». Если подписчик (, у которого я ранее просил только адрес электронной почты ), решит загрузить бизнес-идею, то этот человек, вероятно, будет использовать тот же адрес электронной почты -, что и раньше, только на этот раз добавив имя. Поэтому я хотел бы ВСТАВИТЬ В, и если электронная -почта уже существует -, добавить имя, но только если там уже нет имени (, чтобы человек не мог просто перезаписать чужие данные ).

Я зашел так далеко:

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

обновляет имя, только если оно ранее было нулевым, и это то, что я делаю после , однако он не вставляет новую запись, если электронная почта еще не существует.

Мой столthe table

Так что я попробовал это:

  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, пока они вводят свою электронную почту -чтобы увидеть, зарегистрирована ли электронная -почта :)Итак, это больше не проблема, и я думаю, что это решение, которое я выберу. !)

5
задан Community 23 May 2017 в 12:01
поделиться