Перейти к содержимому

Реферальная программа Мегаплана

Партнерская программа Kredov

Функция Count() брешет!

#1 Вячеслав

Вячеслав
  • Пользователь
  • 357 сообщений
  • Репутация: 0
0

Отправлено 17 Октябрь 2009 - 02:18

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

$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;


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

Изображение

Подскажите пожалусто))

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 17 Октябрь 2009 - 12:14

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

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

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


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

То есть в первом случае к значениям в полях мы сумеем доступиться только по индексу, во втором - только по имени, а в третьем любым способом.
  • 0

#3 link-traffic

link-traffic
  • Пользователь
  • 14 сообщений
  • Репутация: 0

Отправлено 17 Октябрь 2009 - 14:15

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

$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"];
}

  • 0

#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 18 Октябрь 2009 - 22:50

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


Оформление форума – IPBSkins.ru