[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: mysql_num_rows();
Ramzil_Nixon
Дарова всем еще раз.

У меня появилась такой вопрос:

Можно ли использовать mysql_num_rows(); несколько из одного mysql_query(); ?

Пример:


$query = mysql_query("SELECT * FROM user WHERE
`login`='".@mysql_real_escape_string($_POST['login'])."' or
`mail`='".@mysql_real_escape_string($_POST['login'])."' or
`password`='".@mysql_real_escape_string($_POST['password'])."'
");
if(mysql_num_rows($query))
{
if(mysql_num_rows($query))
{
// Пароль верный и тут запускаем сессию
}
else
{
echo 'Пароль неверный';
}
}
else
{
echo 'Логин или email не существует';
}




Спустя 19 минут, 21 секунда (14.11.2011 - 10:06) imbalance_hero написал(а):
Ramzil_Nixon
Функция всегда возвращает результат, в данном случае ЧИСЛО (сколько раз), что тебе мешает самому попробовать через echo ? smile.gif
К тому же твоя строчка является абсурдной.

Спустя 2 минуты, 5 секунд (14.11.2011 - 10:08) l@pteff написал(а):
Скорее всего, здесь нет необходимости делать выборку по всей таблице, лучше так:

$query = mysql_query("SELECT `login`, `password`, `mail` FROM user WHERE
`login`='"
.@mysql_real_escape_string($_POST['login'])."' or
`mail`='"
.@mysql_real_escape_string($_POST['mail'])."' or
`password`='"
.@mysql_real_escape_string($_POST['password'])."'
"
);

По сабжу: какова цель манипуляций с mysql_num_rows()? Скрипт ведь просто проверяет правильность введенных данных?

Спустя 2 минуты, 49 секунд (14.11.2011 - 10:11) imbalance_hero написал(а):
Собака то перед mysql_real_escape_string ЗАЧЕМ?
В программировании действует приоритет скобок:
(а или б) И В, значит ав, или бв.
А или б или в - значит а, или б, или в!

Спустя 4 минуты, 25 секунд (14.11.2011 - 10:15) Ramzil_Nixon написал(а):
Цитата (l@pteff @ 14.11.2011 - 07:08)
Скорее всего, здесь нет необходимости делать выборку по всей таблице, лучше так


В случае того если пароль и логин совпали у меня там еще есть некоторые данные которые мне нужно в сессию присваивать, вот по этому и (*). smile.gif

Цитата (imbalance_hero @ 14.11.2011 - 07:11)
Собака то перед mysql_real_escape_string ЗАЧЕМ?


Я по примеру регистрации сделал, а там они есть, вот по этому и ставил smile.gif

Спустя 6 минут, 7 секунд (14.11.2011 - 10:21) Michael написал(а):
Цитата
У меня появилась такой вопрос:

Можно ли использовать mysql_num_rows(); несколько из одного mysql_query(); ?

Это же проверить самому в скрипте элементарно blink.gif

А вообще в переменную для таких случаев данные записываются.

Спустя 4 минуты, 1 секунда (14.11.2011 - 10:25) Renden написал(а):
Ramzil_Nixon, у тя в запросе написано "выбрать все где логин=логин или пароль=пароль или емеил=емаил" А надо так "выбрать логин, пароль, емаил где (логин=логин или емаил=емаил) И пароль=пароль", т.е :

$query = mysql_query("SELECT login,mail,password FROM user
WHERE (
`login`='"
.mysql_real_escape_string(trim($_POST['login']))."' OR
`mail`='"
.mysql_real_escape_string(trim($_POST['login']))."'
) AND`password`='"
.mysql_real_escape_string(trim($_POST['password']))."'");

а то получается если чувак введет просто логин, то он зайдет без пароля :)..

Спустя 5 минут, 27 секунд (14.11.2011 - 10:31) l@pteff написал(а):
Цитата

В случае того если пароль и логин совпали

Ну так и укажи AND вместо OR
$query = mysql_query("SELECT * FROM user WHERE 
`login`='"
.mysql_real_escape_string($_POST['login'])."' AND
`mail`='"
.mysql_real_escape_string($_POST['mail'])."' AND
`password`='"
.mysql_real_escape_string($_POST['password'])."'
"
);
if (mysql_num_rows(query)) {// Данные указаны верно и тут запускаем сессию}
else {echo 'Вернитесь назад и закончите ввод';}

Если же мэйл нужно как-то отдельно обрабатывать, то под него напиши ещё один запрос с отдельной проверкой mysql_num_rows()

Спустя 3 минуты, 14 секунд (14.11.2011 - 10:34) Ramzil_Nixon написал(а):

) AND


Ты мне скажи откуда взялся эта скобка рядом с AND :D

Спустя 59 секунд (14.11.2011 - 10:35) Ramzil_Nixon написал(а):
Цитата (l@pteff @ 14.11.2011 - 07:31)
Если же мэйл нужно как-то отдельно обрабатывать, то под него напиши ещё один запрос с отдельной проверкой mysql_num_rows()

По ходу так и придется сделать, только для пароля

Спустя 4 минуты, 42 секунды (14.11.2011 - 10:40) Renden написал(а):
Ramzil_Nixon
присмотрись внимательнее она взялась после..
Цитата
WHERE (


Я тебе написал как надо, что ты голову ломаешь?

Спустя 4 минуты, 55 секунд (14.11.2011 - 10:44) Ramzil_Nixon написал(а):
Renden
А что лучше, после WHERE скобками писать или без?

Спустя 2 минуты (14.11.2011 - 10:46) Ramzil_Nixon написал(а):
Цитата (Renden @ 14.11.2011 - 07:40)
что ты голову ломаешь?

Голову ломаю потому, что хочу понять что делает каждый сивол, ведь в будущем пригодиться smile.gif

Спустя 1 минута, 38 секунд (14.11.2011 - 10:48) Renden написал(а):
Ramzil_Nixon
Вплане? Скобки это логика, я написал же тебе выше запрос по по русски для примера...

Спустя 4 минуты, 23 секунды (14.11.2011 - 10:53) Ramzil_Nixon написал(а):
Цитата (Renden @ 14.11.2011 - 07:48)
Вплане? Скобки это логика, я написал же тебе выше запрос по по русски для примера...


Щас испробую все что тут написано

Спустя 7 минут, 45 секунд (14.11.2011 - 11:00) linker написал(а):
Ответ тут один - нельзя.

Спустя 4 минуты, 5 секунд (14.11.2011 - 11:04) Ramzil_Nixon написал(а):
Цитата (linker @ 14.11.2011 - 08:00)
Ответ тут один - нельзя.

Значить придется создать отдельный запрос для сверки пароля?

Спустя 6 минут, 34 секунды (14.11.2011 - 11:11) linker написал(а):
Я попутал функции, можно, тока нифига оно тут не нужно
$query = mysql_query($sql);
if($user = mysql_fetch_assoc($query))
{
echo 'ура, юзверь есть ' . $user['login'];
}
else
{
echo 'Логин или email не существует';
}
твой запрос ожидаемо вернёт либо 1-у запись, либо ничего, поэтому нет никакого резона mysql_num_rows().


_____________
Миллионы приходят, уходят, не в них счастье. Самым важным на свете всегда будут люди в этой комнате, вот здесь, сейчас...

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.