Я хочу проверить мой email
, если он равен $e
, но мое письмо находится в другой таблице с именем info
. Как я могу исправить эту проблему?
Вот мой запрос MySQL до сих пор.
"SELECT password, salt FROM users WHERE (email = '" . $e . "' OR username = '" . $e . "') AND active IS NULL"
Используйте JOIN:
SELECT users.password, users.salt
FROM users
JOIN info
ON info.id = users.info_id
WHERE (users.email = $e OR info.username = $e)
AND users.active IS NULL
Примечание: вам может потребоваться изменить строку, начинающуюся с ON
, в зависимости от того, как вы структурировали вашу схему. Если вы не знаете, какую модификацию внести, обновите свой вопрос, включив вывод SHOW CREATE TABLE users
и SHOW CREATE TABLE info
.
Также вы можете дважды проверить, что в вашем коде не существует уязвимости SQL-инъекции. Хорошей практикой является использование параметров или, по крайней мере, убедитесь, что строки правильно экранированы. Из выписки кода не видно, если вы эскалации правильно или нет.