X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Функция Count() брешет!
toorr2p
toorr2p
Topic Starter сообщение 17.10.2009, 3:18; Ответить: toorr2p
Сообщение #1


Привет, подскажите почему при выборе всех полей с именем name из таблицы выбираются не все! у меня их там 3! или функция count() считает неправильно? но echo вводит 2!!! почему так? вот код:

[php]$sql = "SELECT name FROM ".$dbtabname; //Запрос к базе
$result=mysql_query($sql, $connection);//Выполнение запроса
if (!result) {//проверка выполнения запроса, если не удачно - каюк!
die("Database query failed: " . mysql_error());}

$count = count(mysql_fetch_array($result));
echo $count;[/php]

А это таблица:

[img]http://s40.radikal.ru/i087/0910/ba/3b097f22342c.png[/img]

Подскажите пожалусто))
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 17.10.2009, 13:14; Ответить: ZiTosS
Сообщение #2


Вячеслав, ох пипец...
1) Функция count() возвращает количество элементов в массиве. Функция mysql_fetch_array() возвращает текущую строку(на которую ссылается указатель) из выборки таблицы(ресурса)
Так вот, что у тебя вернёт функция mysql_fetch_array(), будет примерно вот таким:
[php]array(
0 => "Public",
"name" => "Public"
)[/php]
Так вот ты теперь подумай количество чего ты считаешь? Я думаю не количество записей в выборке, а количество элементов в массиве выбранной записи.

2) Чтобы сосчитать количество записей в выборке, есть специальная функция mysql_num_rows(), в качестве параметра ей передаётся ресурс.
[php]$sql = "SELECT name FROM ".$dbtabname; //Запрос к базе
$result = mysql_query($sql, $connection);//Выполнение запроса
$count = mysql_num_rows($result);
echo $count;[/php]

3) По поводу 3 функций обработки результатов
mysql_fetch_row() - возвращает в качестве результата массив [индекс_столбца]=>[значение]
mysql_fetch_assoc() - возвращает в качестве результата массив [имя_столбца]=>[значение]
mysql_fetch_array() - возвращает в качестве результата удвоенный массив [индекс_столбца]=>[значение] + [имя_столбца]=>[значение]

То есть в первом случае к значениям в полях мы сумеем доступиться только по индексу, во втором - только по имени, а в третьем любым способом.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ltb
ltb
сообщение 17.10.2009, 15:15; Ответить: ltb
Сообщение #3


должно быть примерно так:

[php]$query="SELECT name FROM ".$dbtabname;

$r=mysql_query($query);

for($i=0; $i<mysql_num_rows($r); $i++)
{
$row=mysql_fetch_array($r);

print $row["name"];
}[/php]


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 18.10.2009, 23:50; Ответить: ZiTosS
Сообщение #4


link-traffic.biz, А вы не пробовали while использовать? Проще и нагляднее...

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Не срабатывает функция flush. Отключение буфферизации.
2 bombei 7138 3.9.2014, 22:23
автор: -Arks-
Открытая тема (нет новых ответов) функция "mysql_real_escape_string" выдаёт ошибки!
19 Panich 12637 25.5.2011, 13:57
автор: -Panich-
Открытая тема (нет новых ответов) Функция задержки
3 people2010 6679 20.8.2010, 5:37
автор: -Alcorn-


 



RSS Текстовая версия Сейчас: 19.4.2024, 12:43
Дизайн