Есть запрос:
$query = "UPDATE users SET login=\"$name\", passwrd=password(\"$passwd\") WHERE login=\"bogdan\"";
который меняет имя и пароль пользователя в БД MySQL.Но запрос:
$query = "SELECT * FROM users WHERE login='".$login."' and passwrd=password('".$password."')";
не возвращает нужный результат.Помогите, пожалуйста.
>Есть запрос:
> $query = "UPDATE users SET login=\"$name\", passwrd=password(\"$passwd\") WHERE login=\"bogdan\"";Попробуй записать нормально, без вложенных прослешеных кавычек.
Какая версия MySQL?
Версия 4.0.21
Кавычки ставил всякие: ' , " , \"
не проходит.
>Версия 4.0.21
>Кавычки ставил всякие: ' , " , \"
>не проходит.
сомневаюсь что дело в версии
я бы изучил реальные запросы поступающие в базу
возникающие от этих запросов изменения
ну и mysql_error() есесина
>>Версия 4.0.21
>>Кавычки ставил всякие: ' , " , \"
>>не проходит.
>
>
>сомневаюсь что дело в версии
>я бы изучил реальные запросы поступающие в базу
>возникающие от этих запросов изменения
>ну и mysql_error() есесинаЯ думаю что запрос должен выглядеть так.
$query = "SELECT * FROM users WHERE login='".$login."' and passwrd=password('".$password."');";
Только это для постгрес. Я думаю что и для MySQL тоже пойдет. Только не знаю нужна там в конце запроса точка с запятой.
>Я думаю что запрос должен выглядеть так.
>
>$query = "SELECT * FROM users WHERE login='".$login."' and passwrd=password('".$password."');";
>Только это для постгрес. Я думаю что и для MySQL тоже пойдет.
>Только не знаю нужна там в конце запроса точка с запятой.
>Так тоже не проходит. точка с запятой - без разницы. Проверял на PHPMyAdmin - запрос правильный, не выдает никакого результата, а должен :)
Может ошибка в другом? Будем копать.
Если ошибки mysql нет и запрос возвращает 0 строк - значит дело в запросе. попробуйте избавиться от одного условия, для начала от пароляSELECT * FROM users WHERE login='bogdan'
Для общего развития расскажите, какой смысл в условиях проверять и имя и пароль?
У вас в базе будут храниться несколько одинаковых логинов с разными паролями?
>Если ошибки mysql нет и запрос возвращает 0 строк - значит дело
>в запросе. попробуйте избавиться от одного условия, для начала от пароля
>
>
>SELECT * FROM users WHERE login='bogdan'
>
>Для общего развития расскажите, какой смысл в условиях проверять и имя и
>пароль?
>У вас в базе будут храниться несколько одинаковых логинов с разными паролями?
>
Ну вообще если проверять только по паролю тоже не дело, т.к. несколько юзеров может ввести один и тотже пароль и как потом их различать если запрос выдаст 10 таких юзеров с одинаковым паролем.
А насчет запроса я думаю что нужно копать в направлении password('$password') чё то у меня подозрение что она выдает не то что нужно.
>Если ошибки mysql нет и запрос возвращает 0 строк - значит дело
>в запросе. попробуйте избавиться от одного условия, для начала от пароля
>
>
>SELECT * FROM users WHERE login='bogdan'
>
>Для общего развития расскажите, какой смысл в условиях проверять и имя и
>пароль?
>У вас в базе будут храниться несколько одинаковых логинов с разными паролями?
>В базе могут хранится несколько одинаковых логинов и не сколько одинаковых паролей у разных пользователей.
SELECT * FROM users WHERE login='bogdan' - работает правильно, всегда выдает нужный результат!
Без password() все работает отлично. А с password() .... :(
Думаю чёта кге-то упустил, а вот что?
Попробуйте выполнить запрос с password() из phpmyadmin с заведомо правильными именем пользователя и паролем.Если результат запроса пустой, попробуйте сравнить для этого пользователя хэш пароля из базы данных с результатом, который выдает password() :
SELECT passwrd, PASSWORD('пароль пользователя')
FROM users
WHERE login='bogdan'Если хеши разные, то скорее всего изменился метод шифрования паролей, возможно, после обновления mysql сервера или же в базу пароли заносятся другой функцией, ENCRYPT() например.