Запрос почему-то перестал работать

Gogi

Новичок
Запрос почему-то перестал работать

Приветствую всех.

Проблема вот в чем: во всех скриптах запрос работает, кроме одного.

Код:
#..|
#13|   $link = mysql_connect("localhost", "db", "db");
#14|   mysql_select_db("db");
#15|   $pass_res = mysql_query("SELECT password FROM users WHERE username=".$username);
#16|   $my_pass = mysql_fetch_array($pass_res, MYSQL_NUM);
#17|   mysql_free_result($pass_res);
#18|   mysql_close($link);
#..|
После исполнения выходит сообщение:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in T:\home\users\66\login.php on line 16
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in T:\home\users\66\login.php on line 17
Что переводится как:

Внимание: mysql_free_result (): поставляется аргумент не является допустимым MySQL результате ресурс в T: \ дом \ Users \ 66 \ login.php на строке 16 / 17
Никак не могу понять в чем дело? Прошу Вашей помощи. Заранее спасибо.
 

findnext

Новичок
у тебя походу колонка отсутствует, запрос правильный, а вот только не все имена колонок правильные
 

Активист

Активист
Команда форума
строка
15
$pass_res = mysql_query("SELECT password FROM users WHERE username=".$username) or die("Йа туплю: ".mysql_error());

Или между 15 и 16
if ($pass_res === false) exit("Ой... йа жестко туплю: ".mysql_error());

А вообще, кто тебя такому синтаксису SQL учил? Евгений Попов?

$pass_res = mysql_query("SELECT `password` FROM `users` WHERE `username` ='".$username."'");
 

Активист

Активист
Команда форума
+ Нет проверки на корректность SQL запроса, нет проверки на результат соединения + нет проверки на результат выбора БД.

-~{}~ 07.11.08 19:54:

А еще, как перед запросом ты обрабатываешь переменную $username? Полностью.
 

Gogi

Новичок
Поправил синтаксис, стало все ок. Огромное спс, [ps] незачем было так наезжать )

-~{}~ 07.11.08 19:55:

if (!get_magic_quotes_gpc()) {
$username=addslashes($username);
$userpassword=addslashes($userpassword);
}

-~{}~ 07.11.08 19:56:

Она приходит по ПОСТ запросу. Обрабатывать кроме как АДДСЛЭШЕС вроде больше нечем (?)
 

Активист

Активист
Команда форума
Gogi
Незачет - иди повторяй лекции.

http://phpfaq.ru/slashes

А почему они у тебя пришли в виде $username - регистр глобалс?

1. Регистр глобалс в off - обязательно!
2. в самом начале: error_reporting(E_ALL);
3. в самом начале: ini_set("display_errors", "on");

Это прежде всего научит тебя правильно обрабатывать все переменные, а также научит предопределять их, дабы избавится от нотисов и различных дыр. Пока у тебя не исчезнут все ошибки (варнинги, нотисы и т.п.) - код будет дырявым.
 

Gogi

Новичок
Они просто в начале скрипта были выпуты из массива post, дабы не таскать по коду длинные имена, а в остальном соглашусь.
 
Сверху