Мой запрос 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"
Синтаксис запроса неверен. Синтаксис для кросс-таблицы обновления в 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
Не видя таблицы или сгенерированный SQL, я просто угадываю здесь, как отметил Peeka.
Я предполагаю, что у вас есть данные в ваших таблицах, которые позволяют работать (email = '" . $e . "' OR username = '" . $e . "')
. Однако это довольно открыто - обновите любую запись, в которой есть адрес электронной почты или имя пользователя. Когда вы добавите JOIN
более строгий - обновите запись, в которой есть это электронное письмо или имя пользователя.
Проверяйте второе обновление, держу пари, что оно не обновляет запись, которую вы так думаете. Если это так, я бы сказал, что ваши внешние ключи перепутаны, и у вас нет соответствующих данных для пользователей и информации. Любой из них продемонстрировал бы потерю JOIN
.
Если это не помогает - отправьте полученный SQL и вашу схему.