Вот строка моего кода
while($row = mysql_fetch_array($result))
Я хочу получить, сколько столбцов находится в строке. Я попробовал count($row)
, но это вернуло то, что я думаю, это количество ячеек для всех $результатов.
i.e есть фактически 7 столбцов, а 2 строки и count($row)
возвращены 14. Мне нужна функция, которая вернет 7.
Вы видите, что я ошибаюсь.
Спасибо заранее.
EDIT - Найден ответ
Передано MYSQL_NUM
как второй параметр mysql_fetch_array
.
В любом случае, спасибо всем.
Когда вы используете mysql_fetch_array
, каждая строка имеет индексированные столбцы дважды, один раз по столбцу и один раз по имени столбца. Таким образом, count($row)
будет в два раза больше числа столбцов.
Используйте mysql_fetch_row
, если вам нужны только числовые индексы, и mysql_fetch_assoc
, если вам нужны индексы имен. Эти функции возвратят строки с 7 элементами.
PHP имеет функцию, которая возвращает количество столбцов:
mysql_num_fields($result)
Как говорят другие ответы, вы получаете двойной счет, потому что mysql_fetch_array()
возвращает оба ассоциативных ключа (по имени столбца) и числовые клавиши. Я бы использовал вышеприведенную функцию, хотя, независимо от того, что я использую для извлечения моих строк.
mysql_fetch_array()
возвращает строку как объединенный массив числовых индексов и ассоциативных ключей. Вот почему вы получаете 14 вместо 7.
Используйте mysql_fetch_row()
вместо этого, чтобы получить только следующую строку в виде числового индекса. Или mysql_fetch_assoc()
, чтобы получить его с помощью ассоциативных ключей. Переход на любой из них приведет к возврату count($row)
7.
Изменить Я изначально сказал, что mysql_fetch_array()
возвращает весь результат. Я исправил это. Пункт все еще стоит: использование одной из других функций, о которых я упоминал, поможет решить проблему.