Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Проверка значений полей в БД


Автор: assasinnn 5.6.2010, 12:08
Привет всем форумчанам! С базами данных начал ознакамливаться только сегодня, потому возникают "глобальные" трудности.
К примеру, у меня есть таблица users, в которой мне хотелось бы найти количество записей, в которых поля login  и password равны переданным мною переменным $login и $password.
Пытался оформить дело так:
Код

$login = $_POST['nickname'];
$password = md5($_POST['password']);
$sql = "SELECT login, password FROM users WHERE login='$login',password='$password'";
$result = mysql_query($sql);
$rows=mysql_num_rows($result);

Кто поможет дельным советом и подскажет как и что переправить? Заранее спасибо

Автор: bars80080 5.6.2010, 12:32
а что не получилось?

ошибки какие-то? или не выдаёт ничего?


проверка запроса:
Код

echo $sql;

это чтобы увидеть, что в реальности получилось

проверка результата запроса:
Код

echo mysql_error();

сразу после mysql_query($sql);
это чтобы увидеть, если произошла ошибка в синтаксисе

Автор: assasinnn 5.6.2010, 12:47
Вот и ошибка... Однако тонкостей синтаксиса я, к сожалению, не знаю.
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 'password='202cb962ac59075b964b07152d234b70'' at line 1

А вообще логика скрипта в целом правильная?

Автор: Photon 5.6.2010, 13:14
assasinnn, 

Код

select count(1) from users where login='$login' and password='$password'


Это, если нужно только количество..  Обратите внимание на AND между условиями, у вас стоит запятая - это неправильно


Автор: assasinnn 5.6.2010, 13:39
Цитата(Photon @ 5.6.2010,  13:14)
assasinnn, 

Код

select count(1) from users where login='$login' and password='$password'


Попробовал, поставил alert($rows)... получаю всегда единицу, независимо от того, есть запись с такими именно полями или нет

Автор: bars80080 5.6.2010, 15:40
конечно единицу. select count(1) означает - найти количество записей, и возвращает одну строку с результатом.

Код

$sql = 'select count(1)...';
$q = mysql_query($sql);
$r = mysql_fetch_array($q);

var_dump($r);

сами посмотрите, в $r[0]['count(1)'] будет ваше количество строк


но и ваш предыдущий вариант тоже даёт результат:
Код

$sql = "SELECT login, password FROM users WHERE login='$login' and password='$password'";
$result = mysql_query($sql);
$rows=mysql_num_rows($result);

var_dump($rows);
этот последний вариант хорошо использовать тогда, если вы далее хотите получить значения этих строк.
а вариант Photon, если только количество строк

Автор: assasinnn 5.6.2010, 15:53
Спасибо всем! Проблема решена

Автор: Severyanin 15.6.2010, 12:00
Тогда пометьте вопрос как решенный

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)