MySQL Update проблема

0

Мой запрос mysql не обновляет мою базу данных правильно, может кто-нибудь помочь мне исправить эту проблему, я думаю, что это имеет какое-то отношение к JOIN.

Вот мой запрос mysql.

"UPDATE users 
 SET users.last_login = NOW() 
 FROM users JOIN info ON info.user_id = users.user_id 
 WHERE (info.email = '" . $e . "' OR users.username = '" . $e . "') 
 AND users.password = '" . $sha512 . "' 
 AND users.active IS NULL"

Вот рабочий запрос, прежде чем я использовал JOIN.

"UPDATE users SET last_login = NOW() WHERE (email = '" . $e . "' OR username = '" . $e . "') AND password = '" . $sha512 . "' AND active IS NULL"
  • 5
    Ни при каких обстоятельствах не раскрывайте 1. что именно идет не так; 2. Как выглядит окончательный сгенерированный оператор SQL; и 3. Какой результат вы ожидаете. В противном случае мы бы пропустили все удовольствие от угадывания!
  • 0
    @Pekka мой последний логин не обновляется, я ожидаю, что last_login обновит время входа в систему.
Показать ещё 4 комментария
Теги:
sql-update
join

2 ответа

0
Лучший ответ

Синтаксис запроса неверен. Синтаксис для кросс-таблицы обновления в MySQL несколько  отличается от T-SQL. Это должно быть как показано ниже.

 UPDATE users JOIN info ON info.user_id = users.user_id
 SET users.last_login = NOW()   
 WHERE (info.email = '" . $e . "' OR users.username = '" . $e . "') 
 AND users.password = '" . $sha512 . "' 
 AND users.active IS NULL

Проверьте ссылку ниже -

http://blog.ookamikun.com/2008/03/mysql-update-with-join.html

  • 0
    прости мое невежество, что такое T-SQL?
  • 1
    Проверьте полную информацию о t-sql здесь en.wikipedia.org/wiki/Transact-SQL
Показать ещё 1 комментарий
0

Не видя таблицы или сгенерированный SQL, я просто угадываю здесь, как отметил Peeka.

Я предполагаю, что у вас есть данные в ваших таблицах, которые позволяют работать (email = '" . $e . "' OR username = '" . $e . "'). Однако это довольно открыто - обновите любую запись, в которой есть адрес электронной почты или имя пользователя. Когда вы добавите JOIN более строгий - обновите запись, в которой есть это электронное письмо или имя пользователя.

Проверяйте второе обновление, держу пари, что оно не обновляет запись, которую вы так думаете. Если это так, я бы сказал, что ваши внешние ключи перепутаны, и у вас нет соответствующих данных для пользователей и информации. Любой из них продемонстрировал бы потерю JOIN.

Если это не помогает - отправьте полученный SQL и вашу схему.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню