Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

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

 

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

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

тема: Подсчёт количества записей в таблице
 
 автор: Zhenya1992   (22.04.2007 в 12:55)   письмо автору
 
 

$n = "SELECT * FROM `stats` WHERE `name` LIKE '$name'"
Какие значения может принимать перменная $n в зависимости от того, есть ли $name в поле 'name' таблицы 'stats'?

   
 
 автор: bronenos   (22.04.2007 в 13:00)   письмо автору
 
   для: Zhenya1992   (22.04.2007 в 12:55)
 

содержание этого(их) поля(ей) или ничего

   
 
 автор: Zhenya1992   (22.04.2007 в 13:34)   письмо автору
 
   для: bronenos   (22.04.2007 в 13:00)
 

Мне нужно чтобы когда таких полей нет выполнялись одни операции, а если есть то другие. Как написать условие?

   
 
 автор: cheops   (22.04.2007 в 13:51)   письмо автору
 
   для: Zhenya1992   (22.04.2007 в 13:34)
 

Определить наличие полей в результирующей таблице можно при помощи функции mysql_num_rows() - посмотрите пост ниже.

   
 
 автор: cheops   (22.04.2007 в 13:33)   письмо автору
 
   для: Zhenya1992   (22.04.2007 в 12:55)
 

Переменая $n ничего кроме строки запроса содержать не будет, запрос сначала следует выполнить и получить результат.

   
 
 автор: Zhenya1992   (22.04.2007 в 13:34)   письмо автору
 
   для: cheops   (22.04.2007 в 13:33)
 

Выпоолнять через mysql_query($n) ?

   
 
 автор: cheops   (22.04.2007 в 13:49)   письмо автору
 
   для: Zhenya1992   (22.04.2007 в 13:34)
 

Да, затем следует получать дескриптор, проверять его на наличие ошибок и наличие записей в таблице
<?php
  $n 
"SELECT * FROM `stats` WHERE `name` LIKE '$name'";
  
$sts mysql_query($n);
  if(!
$sts) exit("Ошибка ".mysql_error());
  
// Если имеется хотя бы одна запись
  
if(mysql_num_rows($sts))
  {
    while(
$stats mysql_fetch_array($sts))
    {
      echo 
"<pre>";
      
print_r($stats);
      echo 
"</pre>";
    }
  }
  else
  {
    echo 
"Не обнаружено ни одной записи";
  }
?>

   
 
 автор: Zhenya1992   (26.04.2007 в 16:57)   письмо автору
 
   для: cheops   (22.04.2007 в 13:49)
 

Спасибо. Попробовал всё работает.
Только не совсем понятно что делает строка if(!$sts) exit("Ошибка ".mysql_error());

   
 
 автор: Trianon   (26.04.2007 в 17:10)   письмо автору
 
   для: Zhenya1992   (26.04.2007 в 16:57)
 

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

   
 
 автор: Trianon   (22.04.2007 в 21:06)   письмо автору
 
   для: Zhenya1992   (22.04.2007 в 12:55)
 

>$n = "SELECT * FROM `stats` WHERE `name` LIKE '$name'"
>Какие значения может принимать перменная $n в зависимости от того, есть ли $name в поле 'name' таблицы 'stats'?

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

$n = "SELECT COUNT(*) FROM `stats` WHERE `name` LIKE '$name'";

Разница очевидна:
1 - вынуть из таблицы все строки, удовлетворяющие условию.
2 - получить одну строку, одно поле: число, равное количеству строк в таблице, удовлетворяющих условию.

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

   
 
 автор: Zhenya1992   (25.04.2007 в 13:11)   письмо автору
 
   для: Trianon   (22.04.2007 в 21:06)
 

$f = "SELECT COUNT * FROM `stats` WHERE `name` LIKE '$name'";
$n=mysql_query($f);
if ($n==0) ...
Даже когда я ввожу переменную $name которая есть в таблице, то всё равно срабатывает ветка верно. Т.е. n=0 всегда.

   
 
 автор: Trianon   (25.04.2007 в 14:42)   письмо автору
 
   для: Zhenya1992   (25.04.2007 в 13:11)
 

Потому что mysql_query возвращает дескриптор запроса, а он, если запрос корректен, всяко будет оценен как не нуль.
Пишите так:

$f = "SELECT COUNT * FROM `stats` WHERE `name` LIKE '$name'";
$n=intval(mysql_result(mysql_query($f), 0));
if ($n==0) ...

   
 
 автор: Zhenya1992   (26.04.2007 в 16:44)   письмо автору
 
   для: Trianon   (25.04.2007 в 14:42)
 

Копировал Ваш код, выдало ошибку
mysql_result(): supplied argument is not a valid MySQL result resource in ...
При этом срабатывает ветка "верно" всё равно.

   
 
 автор: Trianon   (26.04.2007 в 16:47)   письмо автору
 
   для: Zhenya1992   (26.04.2007 в 16:44)
 

Это в Вашем коде была ошибка, а я не заметил, когда скопировал. Звездочку нужно взять в круглые скобки именно так, как я написал в (22.04.2007 в 21:06)

   
 
 автор: Zhenya1992   (26.04.2007 в 17:00)   письмо автору
 
   для: Trianon   (26.04.2007 в 16:47)
 

Да, действительно, попробовал - работает. Большое спасибо за помощь.

   
Rambler's Top100
вверх

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