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

Форум MySQL

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

 

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

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

тема: Поясните, пожалуйста, что это за функция?
 
 автор: Швейк   (21.02.2005 в 22:03)
 
 

Добрый день,
разбираю в учебнике примеры и нашел интересную строку кода, про которую авторы умалчивают.

$query = "SELECT COUNT (*) FROM auth WHERE
                   name=' $name' AND
                   pass=' $password'  ";


Что такое SELECT я понимаю, но что означает строка
SELECT COUNT (*) , т.е. непонятен именно COUNT (*) .

И для чего переменные $name и $password взяты в одинарные кавычки?
И чем одинарные от двойных отличаются?

Учится мне еще и учится....

С уважением,
Бравый Солдат.

   
 
 автор: Artemy   (21.02.2005 в 22:21)   письмо автору
 
   для: Швейк   (21.02.2005 в 22:03)
 

COUNT() - это встроенная функция MySQL, используеться для подсчета записей в таблице, т.е. счетчик!
Если использовать двойные, то это приведет к ошибке или неправельному результату, можно вообще не использовать, но что будет, если параметр по которому идет выборка состоит из нескольких слов, все это опять же приведет к ошибке!

   
 
 автор: cheops   (21.02.2005 в 22:26)   письмо автору
 
   для: Швейк   (21.02.2005 в 22:03)
 

1) COUNT - это внутренняя функция MySQL, которая возвращает число строк в таблице, в качестве аргумента можно указывать так же имена столбцов - в этом случае будет возвращено число строк, чьё значени для данного поля не равно NULL.

2) В одинарные кавычки значения берутся так как они являются строковыми и если они будут содержать пробелы - анализатору SQL-запроса будет достаточно сложно разобрать запрос.

http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=1893

   
 
 автор: glsv (Дизайнер)   (21.02.2005 в 22:28)   письмо автору
 
   для: Швейк   (21.02.2005 в 22:03)
 

Count(*) подсчитывает количество строк в запросе.
>И для чего переменные $name и $password взяты в одинарные кавычки?
Поля name и pass текстовые, поэтому переменные взяты в кавычки (чтобы было коррекное сравнение).
А одинарные они потому ни потому что двойные уже используются при определении переменной query.

   
 
 автор: Швейк   (22.02.2005 в 00:29)
 
   для: glsv (Дизайнер)   (21.02.2005 в 22:28)
 

Т.е., правильно ли я понял, что по запросу


$query = "SELECT COUNT (*) FROM auth WHERE 
                   name=' $name' AND 
                   pass=' $password'  ";


Выводится число, показывающее сколько в таблице auth имеется записей, в которых в столбце name содержиться значение переменной $name, а в столбце pass - значение переменной $password?
Я правильно Вас понял - речь идет именно о количестве записей, в которых есть это совпадение?


Учится мне еще и учится....

С уважением,
Бравый Солдат.

   
 
 автор: cheops   (22.02.2005 в 02:04)   письмо автору
 
   для: Швейк   (22.02.2005 в 00:29)
 

Да, именно так и этот запрос возвращает одно число.

   
 
 автор: Valeri   (22.02.2005 в 02:05)   письмо автору
 
   для: Швейк   (22.02.2005 в 00:29)
 

да, выведет сколько в таблице записей в которых И name И pass равны И $name И $password

   
 
 автор: Швейк   (22.02.2005 в 10:36)
 
   для: Valeri   (22.02.2005 в 02:05)
 

Еще раз спасибо!
Тема может быть закрыта - Вы очень здорово мне все разъяснили.

С уважением,
Бравый Солдат.

   
 
 автор: Швейк   (28.02.2005 в 14:48)
 
   для: Швейк   (21.02.2005 в 22:03)
 

Опаньки, проблемы возникли при реализации этой функции.
Задача - вывести на экран количество записей в базе.
В MySQL этот код иделаьно работает:

SELECT COUNT(*) FROM applicants


Пытаюсь реализовать это в PHP

include "lib.php";

$dbConn = connectToDB();

$zapros = "SELECT COUNT(*) FROM applicants";
$otvet=mysql_query($zapros, $dbConn);
print "Всего в базе ";
print $otvet;
print  "пользователей.";


В библиотеке lib.php расположена провенная функция connectToDB(), с ней все в порядке.
И вот когда я запускаю файлик в результате вместо количесвта строк вижу
Всего в базе Resource id #3 пользователей
Что бы это значило?

С уважением,
Бравый Солдат.

   
 
 автор: glsv (Дизайнер)   (28.02.2005 в 17:12)   письмо автору
 
   для: Швейк   (28.02.2005 в 14:48)
 

mysql_query() возвращает ссылку на результат запроса. Это еще не сами данные.
Вам нужно писать так:

<?
$zapros 
"SELECT COUNT(*) FROM applicants"
$otvet_res=mysql_query($zapros$dbConn); 
$otvet mysql_result($otvet_res,0);
print 
"Всего в базе "
print 
$otvet;
?>

   
 
 автор: Швейк   (28.02.2005 в 18:30)
 
   для: glsv (Дизайнер)   (28.02.2005 в 17:12)
 

Спасибо.
А что означает ноль в строке

$otvet = mysql_result($otvet_res,0); 


Заранее благодарю.
С уважением,
Бравый Солдат.

   
 
 автор: glsv (Дизайнер)   (28.02.2005 в 21:20)   письмо автору
 
   для: Швейк   (28.02.2005 в 18:30)
 

Это номер строки в результатах запроса. Ведь не всегда у вас будет одна строка.
По ссылке описание этой функции

http://www.softtime.ru/dic/id_dic=127&id_group=2

   
 
 автор: cheops   (28.02.2005 в 22:40)   письмо автору
 
   для: Швейк   (28.02.2005 в 14:48)
 

Функция mysql_query возвращает лишь дескриптор ответа базы данных, при помощи которого данные читаются одной из функций API к базе данных.

http://www.softtime.ru/group/id_group=2

   
Rambler's Top100
вверх

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