Как узнать выбралось ли что-нибудь из таблицы?

Статус
В этой теме нельзя размещать новые ответы.

DDT

Новичок
Как узнать выбралось ли что-нибудь из таблицы?

Предположим, есть у меня таблица. Я выбирию из нее, допустим, все записи.

Если там что-то есть, то хорошо - я с этим работтаю дальше, а вот если ничего нет, то как это можно определить. Мне подсказали, можно импользовать оператор РНР: isset(). Он определяет определена ли переменная.
Вот что я пишу:

PHP:
$result = mysql(DBName, "select * from table");
if (isset($result))
{
echo("OK !!!");
}
В результате он мне ВСЕГДА пишет "ОК !!!", т.е. она всегда определена.

Вопрос: так как же можно определить есть что-нибудь в $result или нет?
 

trent

Developer
Re: Как узнать выбралось ли что-нибудь из таблицы?

Originally posted by DDT
Предположим, есть у меня таблица. Я выбирию из нее, допустим, все записи.

Вопрос: так как же можно определить есть что-нибудь в $result или нет?
сначала mysql_query(), потом mysql_num_rows()
и вообще почитай вот это


http://phpclub.net/talk/showthread.php?s=&threadid=18052
 

DDT

Новичок
Я уже проверял на количество строк и на количество ячеек в результате, но даже если он ничесго не выбрал, то все равно результат содержит ячейки и строку.
 

Demiurg

Guest
Если в результате есть строка, то очевидно, что что-то выбралось.
 

DDT

Новичок
Так вот нет же :) результат содержит в себе только первую пустую строчку. В ней столько же полей, сколько и в одной строке таблицы, так что на все 100% я не могу быть уверен, что в данной таблице ничего нет.
 

Sirius

PHP+MySQL=LOVE
Пробуй функцию trim() - она сжигает пробелы справа и слева от существующих символов! Или превращает строчку в "" - пустоту - если ничего и не было!
 

trent

Developer
Originally posted by DDT
Так вот нет же :) результат содержит в себе только первую пустую строчку. В ней столько же полей, сколько и в одной строке таблицы, так что на все 100% я не могу быть уверен, что в данной таблице ничего нет.
все-таки попробуй сделать не mysql, а mysql_query(), по-моему mysql() уже deprecated...
 

DDT

Новичок
Автор оригинала: Sirius
Пробуй функцию trim() - она сжигает пробелы справа и слева от существующих символов! Или превращает строчку в "" - пустоту - если ничего и не было!
Да, согласен, но это работает только для строковых переменных, а у меня $result - это результат выбора из таблицы, это больше на массив похоже
 

DDT

Новичок
Автор оригинала: trent

все-таки попробуй сделать не mysql, а mysql_query(), по-моему mysql() уже deprecated...
Вот что пишу:
$result = mysql_query(DBName, "select * from table");

Он мне возвращает следующее:
Warning: 0 is not a MySQL link index in select.php on line 51

Хотя я знаю точно, что в этой таблице содержимое есть.
 

Sirius

PHP+MySQL=LOVE
$result = mysql(DBName, "select * from table");

while ($i == mysql_fetch_array($result))
{
if (trim($i[выбери_любое_поле]) == "")
{
echo "Пусто, пусто - выросла капуста:)";
}
}
 

DDT

Новичок
Автор оригинала: trent
смотри в доке на синтаксис mysql_query()

RTFM, RTFM и еще раз RTFM
Во первых: не надо так сильно ругаться ;)

А во вторых он ВСЕ РАВНО :) не воспринимает isset(), точнее всегда показывает, что $result определена.
 

trent

Developer
Originally posted by DDT

Во первых: не надо так сильно ругаться ;)

А во вторых он ВСЕ РАВНО :) не воспринимает isset(), точнее всегда показывает, что $result определена.
тут не нужен isset, mysql_num_rows() вернет количесво строк из выборки...
PHP:
$result = mysql_query("select * from bla-bla-bla");
if (!mysql_num_rows($result))
{
 print "Nothing here";
}
а ссылку гляжу ты проигнориравал... я про эту http://phpclub.net/talk/showthread.php?s=&threadid=18052
 

Demiurg

Guest
PHP:
$result = mysql_query(...);
$n=0;
while($row = mysql_fetch_array($result))
{
 // do something ...
 $n++;
}
if(!$n)
{
 echo 'Странно, записей нет ...';
}
вот и все...
 

RomikChef

Guest
Ну и бредовый топик...
mysql - это пережиток вполне, впрочем, работоспособный. Возвращает тот же самый результ.

ДДТ, надо сначала умные книжки читать, а потом уже программы писать.
Ну, или, на худой конец - сделать echo той переменной, которую ты используешь, но не знаешь, что она вообще должна содержать.

$result будет unset только если при выполнении запроса возникнет ошибка. потому, что он содержит совсем не то, что ты думаешь.
А писать надо так - очень просто:

$result = mysql(DBName, "select * from table");
if (mysql_num_rows($result)) echo"OK !!!";

Вот в постинге от 12.08.02 13:24 как раз и видно, что при выполнении запроса произошла ошибка. и никакие методы вычисления количества полей тут не при чем.
после mysql напиши echo(mysql_error()); и узнаешь, какая именно ошибка.
 

RomikChef

Guest
А тому, кто подсказал тебе про иссет, скажи, что он понимает в РНР не больше валенка моей бабушки.
 

Rynor

stay hungry
в стикеры темку!
а вот так мона ведь, правда?
PHP:
while ($row = mysql_fetch_array ($rs, MYSQL_ASSOC)){
if (!empty($row["id"])) {echo $row["id"];}
}
to Romik:
PHP:
if (mysql_num_rows($result)) echo"OK !!!";
вроде как ОКидоки будет в любом случае кроме системных ошибок, то есть и при пустой выборке
 

RomikChef

Guest
Rynor
Может, не стоит столько глупостей в одном сообщении писать?
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху