Проблема с запросом или PHP?

S_alin4ik_R

Новичок
не пойму в чем проблема...
буквально пару дней назад все работало и тут на тебе...перестало(((
переустановила на всякий случай denwer, но это проблему не решило.
mysql_query постоянно возвращает true, когда в таблице нет таких данных..
пробовала разные варианты
1-й:
PHP:
$login = $_POST['login'];
$password = $_POST['password'];

if (($res_select_id = mysql_query("SELECT producer_id, producer_password FROM producer WHERE producer_login ='".$login."' LIMIT 1")) == true)
{
	$res_otv = mysql_fetch_array($res_select_id);
	$table = 'producer';
}
elseif (($res_select_id = mysql_query("SELECT distributor_id, distributor_password FROM distributor WHERE distributor_login ='".$login."' LIMIT 1")) == true)
{
	$res_otv = mysql_fetch_array($res_select_id);
	$table = 'distributor';
}
2-й:
PHP:
$login = $_POST['login'];
$password = $_POST['password'];

if (mysql_query("SELECT producer_id, producer_password FROM producer WHERE producer_login ='".$login."'"))
{
	$res_select_id = mysql_query("SELECT producer_id, producer_password FROM producer WHERE producer_login ='".$login."' LIMIT 1");
	$res_otv = mysql_fetch_array($res_select_id);
	$table = 'producer';
}
elseif (mysql_query("SELECT distributor_id, distributor_password FROM distributor WHERE distributor_login ='".$login."' LIMIT 1"))
{
	$res_select_id = mysql_query("SELECT distributor_id, distributor_password FROM distributor WHERE distributor_login ='".$login."' LIMIT 1")
	$res_otv = mysql_fetch_array($res_select_id);
	$table = 'distributor';
}
помоги пожалуйста...
 

S_alin4ik_R

Новичок
Что именно не работает?
форма посылает данные, которые потом сравниваются с данными в БД...т.к. юзеры хранятся в разных таблица, приходиться сравнивать со всеми...
данных приходят нормально...при выполнении 1-го условия запрос возвращает true, когда на самом деле в это таблице нет таких данных и должно было быть false..
но при этом если считывать данные, то ни чего не получится( их там нет то)
комментирую 1-е условие, тогда 2-е нормально выполняется...
 

Avron2

Новичок
Дело в том, что функция mysql_query() возвращает true даже если в таблице нет данных, удовлетворяющих условию запроса, т.е. если запрос не возвращает никаких данных, то все равно он возвращает true. False он возвращает только при неудачной попытке получить данные.
 

Semen

Семён
проблема в том что не понимаешь - надо читать, учить
mysql_query возвращает true в случае успешного выполнения запроса
 

Avron2

Новичок
может что-то типа этого подойдет, хотя до конца я задачи не понял.
PHP:
$login = $_POST['login'];
$password = $_POST['password'];

$q = mysql_query("SELECT producer_id, producer_password FROM producer WHERE producer_login ='".$login."'");
if (mysql_num_rows($q)>0)
{
    $res_select_id = mysql_query("SELECT producer_id, producer_password FROM producer WHERE producer_login ='".$login."' LIMIT 1");
    $res_otv = mysql_fetch_array($res_select_id);
    $table = 'producer';
}
else
{
    $res_select_id = mysql_query("SELECT distributor_id, distributor_password FROM distributor WHERE distributor_login ='".$login."' LIMIT 1")
    $res_otv = mysql_fetch_array($res_select_id);
    $table = 'distributor';
}
 

S_alin4ik_R

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

S_alin4ik_R

Новичок
может что-то типа этого подойдет, хотя до конца я задачи не понял.
PHP:
$login = $_POST['login'];
$password = $_POST['password'];

$q = mysql_query("SELECT producer_id, producer_password FROM producer WHERE producer_login ='".$login."'");
if (mysql_num_rows($q)>0)
{
    $res_select_id = mysql_query("SELECT producer_id, producer_password FROM producer WHERE producer_login ='".$login."' LIMIT 1");
    $res_otv = mysql_fetch_array($res_select_id);
    $table = 'producer';
}
elseif 
{
    $res_select_id = mysql_query("SELECT distributor_id, distributor_password FROM distributor WHERE distributor_login ='".$login."' LIMIT 1")
    $res_otv = mysql_fetch_array($res_select_id);
    $table = 'distributor';
}
СПАСИБО!!!....раньше ответили, чем задала вопрос))))
 

S_alin4ik_R

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

Avron2, спасибо большое...действительно помог)))
 

zerkms

TDD infected
Команда форума
S_alin4ik_R
Смотря что понимать под помощью. В известной поговорке про рыбу и умение ловить - вам нужен только результат, а не навык. Как только вам попадётся задача, которая отличается на полдюйма от текущего ответа - вы не сможете ничего поделать, а снова придёте сюда просить рыбу.
 

zerkms

TDD infected
Команда форума
Активист
Работает и ладно ) Готов поспорить что ТС читать ссылку не будет.
 

S_alin4ik_R

Новичок
S_alin4ik_R
Смотря что понимать под помощью. В известной поговорке про рыбу и умение ловить - вам нужен только результат, а не навык. Как только вам попадётся задача, которая отличается на полдюйма от текущего ответа - вы не сможете ничего поделать, а снова придёте сюда просить рыбу.
зря вы так...мне не нужен только результат...в данной ситуации я действительно протупила, но пользоваться примерами я умею...тот код, который написал Avron2, мне помог, но я его переделывала, т.е. даже если мне словами бы написали, что после выполнения запроса проверить на количество строк в результате запроса, я бы смогла сама написать этот код...
 

zerkms

TDD infected
Команда форума
S_alin4ik_R
Ну, по правде говоря, код он привёл очень и очень странный (как минимум странный, если не сказать глупый). Зачем выполнять один и тот же запрос дважды - я представить причин не могу.
 

S_alin4ik_R

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

zerkms

TDD infected
Команда форума
S_alin4ik_R
PHP:
$q = mysql_query("SELECT producer_id, producer_password FROM producer WHERE producer_login ='".$login."'");
if (mysql_num_rows($q)>0)
{
    $res_select_id = mysql_query("SELECT producer_id, producer_password FROM producer WHERE producer_login ='".$login."' LIMIT 1");
    $res_otv = mysql_fetch_array($res_select_id);
На вашем месте я бы на чужую невнимательность не стал указывать. В каком месте эти два запроса отличаются принципиально, угу?
 
Сверху