Как получить правильное количество столбцов из mysql_fetch_array ()?

0

Вот строка моего кода

while($row = mysql_fetch_array($result))

Я хочу получить, сколько столбцов находится в строке. Я попробовал count($row), но это вернуло то, что я думаю, это количество ячеек для всех $результатов.

i.e есть фактически 7 столбцов, а 2 строки и count($row) возвращены 14. Мне нужна функция, которая вернет 7.

Вы видите, что я ошибаюсь.

Спасибо заранее.

EDIT - Найден ответ

Передано MYSQL_NUM как второй параметр mysql_fetch_array.
В любом случае, спасибо всем.

  • 0
    Вы должны принять ответ Джона Кугельмана, так как он правильно описал, почему вы видите результаты, а также решение.
Теги:
arrays

3 ответа

2
Лучший ответ

Когда вы используете mysql_fetch_array, каждая строка имеет индексированные столбцы дважды, один раз по столбцу и один раз по имени столбца. Таким образом, count($row) будет в два раза больше числа столбцов.

Используйте mysql_fetch_row, если вам нужны только числовые индексы, и mysql_fetch_assoc, если вам нужны индексы имен. Эти функции возвратят строки с 7 элементами.

3

PHP имеет функцию, которая возвращает количество столбцов:

mysql_num_fields($result)

Как говорят другие ответы, вы получаете двойной счет, потому что mysql_fetch_array() возвращает оба ассоциативных ключа (по имени столбца) и числовые клавиши. Я бы использовал вышеприведенную функцию, хотя, независимо от того, что я использую для извлечения моих строк.

2

mysql_fetch_array() возвращает строку как объединенный массив числовых индексов и ассоциативных ключей. Вот почему вы получаете 14 вместо 7.

Используйте mysql_fetch_row() вместо этого, чтобы получить только следующую строку в виде числового индекса. Или mysql_fetch_assoc(), чтобы получить его с помощью ассоциативных ключей. Переход на любой из них приведет к возврату count($row) 7.

Изменить Я изначально сказал, что mysql_fetch_array() возвращает весь результат. Я исправил это. Пункт все еще стоит: использование одной из других функций, о которых я упоминал, поможет решить проблему.

  • 0
    Это не правильно ... mysql_fetch_array () будет "извлекать строку результата в виде ассоциативного массива, числового массива или обоих". Он возвращает одну строку, но по умолчанию возвращает столбцы, проиндексированные как по номеру, так и по имени столбца, поэтому каждый столбец указан дважды.
  • 0
    Вы простите меня, если я поддержу ваш отредактированный ответ и заставлю вас потерять желанную отметку 1337 повторений?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню