проверка результата mysql_query

usascha

Новичок
проверка результата mysql_query

Всем здрасте. Немного не разберусь как определить условие для вывода через echo
Вот код:
[SQL]
$abon = "SELECT *
FROM subscriber s
LEFT JOIN abonement a ON a.subscriber_id = s.id
WHERE a.subscriber_id = ".$_GET['subscriber_id'];
[/SQL]
PHP:
		$sql = mysql_query($abon, $connect) or die(mysql_errno().mysql_error()); 
		while ($row = mysql_fetch_array($sql)) {
			$id = $row["id"];
			$abo = $row["abo"];
			$subscriber_i = $row["subscriber_id"];
			$abo_date = $row["abo_date"];
		var_dump($id);
/*		print_r ($id);
		echo $id;
		var_export($id);
*/
		echo (empty($sql)) ? "На абонемент не подписан." :
 "<li>".$id.". ".$abo.". Действителен до: 
<input class=\"card1\" type=\"text\" name=\"abo_date\" value=\"$abo_date\" size=\"15\">"; 
		}
Что нужно поставить в echo (empty($sql)) чтобы выполнялась проверка и выводился результат? результатом запроса м.б. как NULL, так и какое-то значение.

по сайту поискал, но не зная что искать результаты моего поиска не удовлетворили меня. :(
 

usascha

Новичок
FM я читал. Вариант echo (!$sql) ... не работает.

Единственный вариант проверять количество строк в результирующем наборе?

А как вообще можно узнать содержимое ресурса, до начала его разбора с помощью mysql_fetch_row или т.п.? Или это не нужно.
 

NiGhT_GhOsT

Новичок
usascha
лично я использую mysql_affected_rows(), это более универсально, на мой взгляд.
 

0xHH

Новичок
a.subscriber_id = ".$_GET[ 'subscriber_id'];

Нет такого.

Используй

function db_prepare_string($p_string)
{
return mysql_real_escape_string( $p_string );
}

function db_prepare_int( $p_int )
{
return (int)$p_int;
}

function db_prepare_bool( $p_bool )
{
return (int)(bool)$p_bool;
}
 

Фанат

oncle terrible
Команда форума
NiGhT_GhOsT
ты с какого дерева упал?

-~{}~ 26.08.06 13:59:

0xHH
приведи пример, когда _int не сможет заменить _bool
и какой вообще смысл в этих функциях из одной строчки?
 

0xHH

Новичок
Фанат
Если мне придётся менять mysql_real_escape_string на mysql_escape_string, менять везде или только в db_prepare_string?
 

Фанат

oncle terrible
Команда форума
круто.
а если придётся, к примеру, поменять trim на rtrim, то, предвидя это знаменательное событие, следует написать собственную функцию my_trim
и вообще - какой простор для функциетворчества...
 

Фанат

oncle terrible
Команда форума
разве mySQL это едиственное и навечно?
это стандартный аргумент.
правда, я ещё не встречал ни одного человека, которому такая абстракция помогла бы безболезненно перейти с одной субд на другую.

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

В общем, строк не всегда бывает десятки тысяч и более.
Для уровня же человека, который зада вопрос, более правильным было бы не три фнепонятные функции, а объяснение, для чего там int.

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

Фанат

oncle terrible
Команда форума
ну, в общем, мы говорим об одном и том же.
ты возразил ведь, насколько я понимаю, именно по сути абстрактного подхода вообще , а не рьяно вступился за эти три функции в частности.

я, естественно, не противник абстракции.
(хотя и считаю, что временами она зашкаливает, и программер теряет тот момент, когда заполнить все параметры абстрактного подхода становится сложнее, чем написать с нуля руками)

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

Перед тем, как писать и использовать абстракцию, человек сначала должен понять - а ЧТО он внутрь её засовывает.
 

vonica

Новичок
Автор оригинала: NiGhT_GhOsT
usascha
лично я использую mysql_affected_rows(), это более универсально, на мой взгляд.
Ничего универсального нет.

mysql_affected_rows() не работает с SELECT -- только с запросами, модифицирующими таблицу. Чтобы получить количество рядов, возвращённых SELECT-запросом, используйте функцию mysql_num_rows()

mysql_num_rows
 
Сверху