[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ошибка поиска значения в таблице
Страницы: 1, 2
Reh
Вечер добрый.

Хочу проверить на существование запись в таблице, но почему-то if всегда возвращает false. Подскажите в чем ошибка?


$result = mysql_query ("SELECT * FROM `users` WHERE email = ".$email);


if ($result)
{
...

Valick
$query = "SELECT * FROM `users` WHERE email = '".$email."'";
$result = mysql_query ($query) or die(mysql_error());


вот тебе ответ, но не за просто так, объясни в чем твоя ошибка.
попробуй подставить в $query свой запрос, посмотри что оно тебе скажет

_____________
Стимулятор ~yoomoney - 41001303250491
veos
Изучи страницу: http://www.php.net/manual/ru/function.mysql-query.php
Хочу отметить:
Цитата
Данное расширение устарело, начиная с версии PHP 5.5.0, и будет удалено в будущем. Используйте вместо него MySQLi или PDO_MySQL.

Также:
Цитата
Следующий запрос составлен неправильно и mysql_query() вернёт FALSE.
$result = mysql_query('SELECT * WHERE 1 = 1');
if (!$result) {
    die('Неверный запрос: ' . mysql_error());
}


А по твоему вопросу, используй: http://www.php.net/manual/ru/function.mysql-num-rows.php , но опять таки, бросай этот mysql_....... и переходи на правильные решения: MySQLi или PDO_MySQL.
Reh
В том что нет проверки на ошибку? Хотя наверное нет, раз нужно попробовать подставить свой запрос скорей всего ошибка в нем. Но в других местах он у меня работает. Подставил твой код, у меня теперь в if всегда true, при любых значениях
$email. Может влияет то что я сюда аяксом обращаюсь?
AllesKlar
veos
филосоФ smile.gif

У него ошибка в запросе. До mysql_num_rows ( resource $result ) дело просто не дойдет, т.к. $result как таковой отсутсвует, а присутсвует в нем логическое false

Reh
Цитата
у меня теперь в if всегда true

У тебя в if не true.
У тебя нечто другое, что не равно false.
Припиши там var_dump($result), увидишь, что там.

_____________
[продано копирайтерам]
Reh
Цитата
До mysql_num_rows ( resource $result ) дело просто не дойдет

так и есть, я так пробовал уже - скрипт сразу выдает ошибку (
Reh
там - resource(5) of type (mysql result)
AllesKlar
Reh
Ну так здОрово же! smile.gif
Вот видишь, а ты говорил, что всегда true smile.gif
А там ссылка на результат запроса.

Теперь внимание, вопрос! Если результат пуст - это все же результат или отсутсвие результата? smile.gif
// Корзинка с пирожками - результат с данными от бабушки.
// Корзинка без пирожков - бабушка прислала пустой результат
// Нет корзинки - результат от бабушки не пришел (внучка грубиянка, неправильный запрос отправила, бабушка не поняла слэнг)
smile.gif

_____________
[продано копирайтерам]
Valick
Цитата
Хотя наверное нет, раз нужно попробовать подставить свой запрос скорей всего ошибка в нем.

Этого мало, "наверно" тут не прокатит, я с тебя требую ответ на посталненный вопрос. В чем твоя ошибка. Неужели трудно сравнить два запроса? Найти отличие и найти ответ?
Еще вопрос на засыпку:
Как думаешь зачем я сам запрос написал в отдельной переменной? Что можно сделать с этой переменной прежде чем отправить на выполнение в mysql?

_____________
Стимулятор ~yoomoney - 41001303250491
Reh
Я правильно понимаю что дело в кавычках?
Если значение переменной поставить в кавычки, то вместо этого - resource(5) of type (mysql result) получаем false.
Valick
Цитата
Я правильно понимаю что дело в кавычках?

Да, и это синтаксис SQL, т.е. базовые знания.

_____________
Стимулятор ~yoomoney - 41001303250491
veos
Цитата
veos
филосоФ

Бывает )

Цитата
У него ошибка в запросе. До mysql_num_rows ( resource $result ) дело просто не дойдет, т.к. $result как таковой отсутсвует

Так я это знаю. Не стал расписывать, рассчитывая на то, что ТС прислушается перейти на плейсхолдеры. Так что нини.....

Цитата
Вот видишь, а ты говорил, что всегда true

поправлю, false

Reh
Да, в твоем случае ковычки

Valick тогда объясни про sql инъекции и как предовтратить их ))
Ведь это будет следующий вопрос )
veos
$rows = mysql_query("SELECT * FROM `users` WHERE `email` = '" . mysql_real_escape_string($email) . "'");
if(mysql_num_rows($rows) > 0) {
echo 'OK';
} else {
echo 'NO';
}
Reh
veos, Valick, AllesKlar - спасибо большое!
Valick
Цитата
Valick тогда объясни про sql инъекции и как предовтратить их ))
Ведь это будет следующий вопрос )

Ну у человека с кавычками проблема, а ты ему про инъекции, да про PDO.
Для того чтобы выучить язык SQL (а там реально много всего интересного), имхо, лучше сначала абстрагироваться от всего остального, в том числе и от РНР. И уж ни PDO ни mysqli_ никак в этом не помогает, наоборот человек начинает изобретать велосипед, лепить собственную "обёртку" (начинает ООПешить в темную голову), в результате чего запросы к БД сводятся к SELECT * FROM `table`.
___
Ну а mysqli_ еще в 2007 году придумали wink.gif

_____________
Стимулятор ~yoomoney - 41001303250491
Быстрый ответ:

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