Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как посчитать кол-во записей в таблице
 
 автор: PantiL   (02.05.2006 в 09:07)   письмо автору
 
 

В статье о постраничной навигации приведен пример

// Определяем общее число записей в базе данных
$result = mysql_query("SELECT COUNT(*) FROM post");
$posts = mysql_fetch_row($result);

Но функция mysql_fetch_row() возвращает массив, а не кол-во записей, так что получается ошибка. Как же тогда использовать COUNT или не заморачиваться и воспользоваться функцией mysql_num_rows()

   
 
 автор: Boss   (02.05.2006 в 10:51)   письмо автору
 
   для: PantiL   (02.05.2006 в 09:07)
 


<?
$sql 
"SELECT COUNT(*) FROM table";
$r_sql mysql_query($sql);
if (
$r_sql$mycount mysql_result($r_sql0);
echo 
"Количество записей: ".$mycount;
?>

   
 
 автор: Евгений Петров   (02.05.2006 в 12:43)   письмо автору
 
   для: Boss   (02.05.2006 в 10:51)
 

Зачем так много переменных и лишние проверки? Все это можно компактно оформить в одну строку:
<?
  
echo mysql_result(mysql_query("SELECT COUNT(*) FROM table"),0);
?>

   
 
 автор: Loki   (02.05.2006 в 13:49)   письмо автору
 
   для: Евгений Петров   (02.05.2006 в 12:43)
 

Это хорошо когда у вас статичный запрос, а ну как он формируется из десятка переменных, как вы его будете в такой конструкции отлаживать?

   
 
 автор: Евгений Петров   (02.05.2006 в 15:16)   письмо автору
 
   для: Loki   (02.05.2006 в 13:49)
 

В данном случае запрос как раз и был статичный, хот я все равно не вижу смысла скажем в такой конструкции:
<?
  $query 
"SELECT id,name,parent FROM $query_tbl WHERE $where AND id = '$id' ORDER BY $order_field LIMIT $num";
  
$result mysql_query($query);
  if(
$result)
  {
    ...
  }
?>

когда можно написать проще:
<?
  
if($result mysql_query("SELECT id,name,parent FROM $query_tbl WHERE $where AND id = '$id' ORDER BY $order_field LIMIT $num"))
  {
    ...
  }
?>

Причем от if тоже можно избавиться...
Зачем создавать лишние переменные? ИМХО никакого удобства в отладке они не несут...

   
 
 автор: Boss   (02.05.2006 в 15:13)   письмо автору
 
   для: Евгений Петров   (02.05.2006 в 12:43)
 

Лишнии проверки никогда не помешают...

   
 
 автор: Евгений Петров   (02.05.2006 в 15:18)   письмо автору
 
   для: Boss   (02.05.2006 в 15:13)
 

В том то и дело что они ЛИШНИЕ...
Посудите сами, конструкция:
if ($r_sql)

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

   
 
 автор: Loki   (02.05.2006 в 15:28)   письмо автору
 
   для: Евгений Петров   (02.05.2006 в 15:18)
 

Ну сервер ничего никому не обязан, так что отвалится может в любой момент (в том числе и в процессе выполнения скрипта).
Но вы правы: я все эти штуки давно вынес в отдельную функцию - код при этом сильно сокращается... Сейчас возникла мысль о том, что надо бы к этой функции режим отладки прикрутить:)

   
 
 автор: Boss   (02.05.2006 в 15:36)   письмо автору
 
   для: Евгений Петров   (02.05.2006 в 15:18)
 

Смысл в том что мы проверяем успешность выполнения запроса.
мы проверяем:
if ($r_sql)
{
// успешное выполнение запроса.
}
else echo "Сервер не доспутен";

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

   
 
 автор: Евгений Петров   (02.05.2006 в 15:41)   письмо автору
 
   для: Boss   (02.05.2006 в 15:36)
 

Ну конкретно про эту проверку, да, действительно, это у каждого стиль такой, но когда дело о новых переменных я не могу сидеть молча :).

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования