2013-05-06 6 views
-3

Я использую несколько функций, чтобы регистрировать пользователей на веб-сайте. Я первый сделал вход(), который выглядит следующим образом:Ошибка mysql_result внутри функции

function login($username, $password){ 
$id = user_id_from_username($username); 

$username = sanitize($username); 
$password = md5($password); 

return (mysql_result(mysql_query("SELECT COUNT(`id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'"), 0) == 1) ? $id : false; 
} 

Как вы можете видеть на второй линии функции она вызывает другую функцию user_id_from_username. Это выглядит следующим образом:

function user_id_from_username($username) { 
$username = sanitize($username); 
return mysql_result(mysql_query("SELECT `id` FROM `users` WHERE `username` == '$username'"), 0, `id`); 
} 

Теперь, когда я использую функцию входа в систему я получаю предупреждение о том, следующее:

Предупреждение: mysql_result(): поставляется аргумент не является допустимым MySQL результаты ресурс в ... /users.php on line 62

Это ссылка на mysql_result в операторе return user_id_from_username. Это приводит к неправильной работе входа.

Я не могу решить это предупреждение. Вы, ребята, видите что-то не так?

Большое спасибо!

+0

Что говорит 'mysql_error' после вызова' mysql_query'? –

+0

Вам не любопытно было проверить ** настоящий ** запрос, отправленный в БД? – zerkms

+0

Я не использовал mysql_error. Как я могу использовать это для печати ошибки? – RightLeftRight12

ответ

2

Это может быть в запросе:

WHERE `username` == '$username'" 

Попробуйте изменить его (удалить лишние =)):

return mysql_result(mysql_query("SELECT `id` FROM `users` WHERE `username` = '$username'"), 0, "id"); 

EDIT: Кроме того, если это новый проект, использовать PDO вместо функций mysql_, пожалуйста, добавьте некоторую обработку ошибок.

+0

Теперь я предупреждаю, что говорит: Предупреждение: mysql_result() [function.mysql-result]: uid = 10941021 (пользователь) gid = 100450 (inetuser) groups = 100450 (inetuser) не найден в индексе результата MySQL 4 в .../users.php в строке 62 – RightLeftRight12

+0

В конце этой строки, в которой вы переходите в 'id', попробуйте включить ее в обычные кавычки, а не обратно. Я обновил свой код. –

+0

@HinesBourne: Не только _try_, обратные тики похожи на вызов функции 'system' ... +1 для ответа, btw ... неправильный оператор является причиной проблемы:' mysql_result' не является передан ресурс mysql, потому что запрос не удался, потому что его синтаксис неверен –

Смежные вопросы