LINUX.ORG.RU

[mysql lamo] Выбор 2 колонок из таблицы


0

0

Сижу и ничего не понимаю. Есть запрос mysql_query("SELECT * FROM `db_users` WHERE (mail=$mail,pass=$pass)") or die(mysql_error());

Получаю "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'pass=pass)' at line 1"

Пробовал не запятую ставить, а AND, а также WHERE (mail,pass) IN ($mail,$pass). На все ругается. Можно, конечно, выбрать все значения из таблицы, и гонять цикл, но хотелось бы через SELECT.

Где я туплю?

Ответ на: комментарий от fedkoff

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND pass=pass' at line 1

NiggasLife
() автор топика

Поля mail и pass CHAR(n)? Тогда так:
mysql_query("SELECT * FROM `db_users` WHERE mail='$mail' AND pass='$pass'");

$mail и $pass желательно обезопасить с помощью mysql_real_escape_string, примерно так:

mysql_query(
sprintf("SELECT * FROM `db_users` WHERE mail='%s' AND pass='%s'",
mysql_real_escape_string($mail),
mysql_real_escape_string($pass)
)
);

RR
()
Ответ на: комментарий от RR

Поля char, да. Но выдает при '$mail' и '$pass'

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'pass='pass'' at line 1

NiggasLife
() автор топика

Еще возможно что название поля "pass" недопустимо в mysql, попробуй переименовать его, встречал подобное к примеру с названием "decs", тоже долго не мог понять.

fedkoff
()
Ответ на: комментарий от NiggasLife

обрати внимание на AND вместо запятой
mysql_query("SELECT * FROM `db_users` WHERE mail='$mail' AND pass='$pass'");
просто скопируй отсюда код и должно заработать.

RR
()
Ответ на: комментарий от fedkoff

> Еще возможно что название поля "pass" недопустимо в mysql, попробуй
переименовать его, встречал подобное к примеру с названием "decs",
тоже долго не мог понять.

Неправда:

mysql> create table test_table (decs int, pass int);
Query OK, 0 rows affected (0.02 sec)

с чего бы 'pass' было недопустимым?

gods-little-toy ★★★
()
Ответ на: комментарий от gods-little-toy

ТС вместо логических операторов упорно пишет запятую.

RR
()
Ответ на: комментарий от RR

Таки да, нужно было курить мануалы до полного просветления, а не примеры гуглить.

SELECT * FROM `db_users` WHERE mail='$mail' AND passw='$passw'

Так работает.

NiggasLife
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.