Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/54: Рейтинг темы: голосов - 54, средняя оценка - 4.91
67 / 44 / 5
Регистрация: 22.02.2011
Сообщений: 285
1

Что возвращает оператор выборки SELECT

07.09.2011, 15:26. Показов 11135. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот запрос:
PHP
1
$result = mysql_query("SELECT name FROM data WHERE login='$login' AND pass='$password'",$db);
вот код:
PHP
1
2
3
4
5
6
7
8
if($result=='true')
{if($prover>0)
{    
echo"Спасибо,что вошли $myrow[name]";}
else
{echo "Пользователь с таким логином и паролем не найден!";}}
else
{echo "Вход не удался";}
почему условие не срабатывает if($result=='true') хотя запрос проходит удачно,когда проделываю такое с оператором вставки insert,то всё работает,
когда пишу кстати так:
PHP
1
2
3
4
5
6
7
8
9
if($result=='false')
{echo "Вход не удался";}
else
{
if($prover>0)
{    
echo"Спасибо,что вошли $myrow[name]";}
else
{echo "Пользователь с таким логином и паролем не найден!";}}
всё срабатывает,почему когда пишу if($result=='true') не работает
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.09.2011, 15:26
Ответы с готовыми решениями:

Что возвращает cast оператор?
template <class T> class A { operator T () const {return value;} private: T value; }

Что возвращает оператор return?
довольно часто в книгах опускают оператор return, просто пишут,что он возвращает значение. а что...

Что возвращает MySQL если select ничего не находит
Вопрос возник при написании серверной части на яве, которая должна проверить уникальность логина по...

Оператор - Return. Что, куда и когда возвращает
int main ( приветствую коллеги ) { Подобная тема на форуме уже обсуждалаь, и я ее смотрел!...

16
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
07.09.2011, 16:04 2
потому что именно твое true - это строка, а не булин. И false то же самое

а в случае выборки из таблицы функция должна возвратить ресурс, а не булин
0
67 / 44 / 5
Регистрация: 22.02.2011
Сообщений: 285
07.09.2011, 19:59  [ТС] 3
не особо понятно...
0
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
07.09.2011, 20:12 4
ты выбираешь данные из таблицы
PHP
1
$result = mysql_query("SELECT name FROM data WHERE login='$login' AND pass='$password'",$db);
следовательно в переменной result будет содержаться ресурс, а не булев тип (true, false).
1
67 / 44 / 5
Регистрация: 22.02.2011
Сообщений: 285
07.09.2011, 20:43  [ТС] 5
а почему тогда в случае с false сработало
0
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
07.09.2011, 21:00 6
потому что функция возвращает:
  • ресурс в случае успеха запросов SELECT, SHOW, EXPLAIN, DESCRIBE
  • true во всех остальных успешных случаях
  • false в случае неудачи
Мануал почитай. Там всё это есть
0
Комбинатор
980 / 252 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
07.09.2011, 22:31 7
Цитата Сообщение от profid Посмотреть сообщение
if($result=='true')
а это еще что?
Если хотите проверить значение переменной на истину, так и пишите ($var == true)
1
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
07.09.2011, 22:36 8
или просто
PHP
1
if($var)
0
Комбинатор
980 / 252 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
07.09.2011, 23:15 9
Цитата Сообщение от Денис Н. Посмотреть сообщение
if($var)
А вот тут нет, этим мы проверяем наличие значения в $var, отличного от null, 0, false.
В $var имеем ресурс, при удачном подключении, а это уже что-то... значит if (true), а если подключения не будет, то и ресурса не будет, а значит и if (false).
0
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
07.09.2011, 23:29 10
false будет в любом случае
true будет срабатывать только при запросах, отличных от SELECT, SHOW, EXPLAIN, DESCRIBE.
При запросе SELECT if(true) работать не будет, потому что в переменной будет совсем иной тип данных.
Или я тебя не понял?
0
Комбинатор
980 / 252 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
08.09.2011, 00:31 11
Цитата Сообщение от Денис Н. Посмотреть сообщение
false будет в любом случае
true будет срабатывать только при запросах, отличных от SELECT, SHOW, EXPLAIN, DESCRIBE.
При запросе SELECT if(true) работать не будет, потому что в переменной будет совсем иной тип данных.
Или я тебя не понял?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/* подставь правильные праметры подключения 
 * и $var будет содержать ресурс, а это уже
 * что-то...
 * раскомменти поочередно строки ниже
 */
//$var = @mysql_connect();
//$var  = 12;   //if (true)
//$var  = 0;    //if (false)
//$var = null;  //if (fasle)
//$var = 'true';//if (true)
//$var = false; //if (false)
if ( $var ) {
    echo 'true';
} else {
    echo 'false';
}
Добавлено через 12 минут
Цитата Сообщение от profid Посмотреть сообщение
всё срабатывает,почему когда пишу if($result=='true') не работает
Потому что надо писать true без кавычек, а иначе это просто строка, содержащая слово true. А $var не равен строке содержащей слово true, вот вы и заходите в false, даже если подключение удалось.
1
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
08.09.2011, 00:31 12
все, въехал, каюсь=)
0
DenQ
08.09.2011, 00:37
  #13

Не по теме:

Цитата Сообщение от Денис Н. Посмотреть сообщение
все, въехал, каюсь=)
Ничего бывает, главное немного опыта приобрел! :)

0
Денис Н.
08.09.2011, 00:40
  #14

Не по теме:

Я никогда так не проверял и поэтому даже в голову не приходило, что если что-то есть, то это уже тру. Типы скачут тока в путь

0
Комбинатор
980 / 252 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
08.09.2011, 00:42 15
Цитата Сообщение от Денис Н. Посмотреть сообщение
Я никогда так не проверял и поэтому даже в голову не приходило, что если что-то есть, то это уже тру. Типы скачут тока в путь
Но если $var == 0, или null или false, тогда в "ветку true" не пойдет...
0
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
08.09.2011, 00:43 16
это ясно
1
67 / 44 / 5
Регистрация: 22.02.2011
Сообщений: 285
08.09.2011, 13:58  [ТС] 17
Цитата Сообщение от Денис Н. Посмотреть сообщение
false будет в любом случае
true будет срабатывать только при запросах, отличных от SELECT, SHOW, EXPLAIN, DESCRIBE.
При запросе SELECT if(true) работать не будет, потому что в переменной будет совсем иной тип данных.
Или я тебя не понял?
вот так всё понятно мне

Добавлено через 5 минут
Цитата Сообщение от DenQ Посмотреть сообщение

Потому что надо писать true без кавычек, а иначе это просто строка, содержащая слово true. А $var не равен строке содержащей слово true, вот вы и заходите в false, даже если подключение удалось.
понятно теперь
0
08.09.2011, 13:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.09.2011, 13:58
Помогаю со студенческими работами здесь

Как вернуть в запросе значение по умолчанию, если SELECT возвращает NULL или ничего не возвращает?
Добрый день! Например я хочу чтобы донное выражение возвращало мне 0 или скажем 1, если...

оператор выборки
итак. прохожу собеседование. дали задание.. как сделать - черт его знает.. это моя последняя...

Как сложить 3 SELECT выборки
Есть 3 сложных выборки, каждая из которых возращает столбец чисел. Мне нужно сложить эти 3 столбца...

Ошибка при выполнении выборки SELECT
$result = mysql_query("SELECT * FROM `пользователи` WHERE login=$newlog",$msconnect); $row =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru