Как остановить MySQL от дублирования записи каждого столбца в возвращаемых массивах?

Мои запросы MySQL возвращают массивы с дублирующимися записями: пронумерованные ключи и помеченные ключи с одинаковыми данными внутри. Это может быть стандартным, но это кажется пустой тратой и что-то, что может вызвать проблемы, если я печатаю значения. Я имею в виду, не огромную проблему, очевидно. Но мне просто интересно, могу ли я это остановить. Это кажется ненужным. Например:

Array( [0] => "Ted", [first_name] => "Ted", [1] => "Schmidlap", [last_name] => "Schmidlap" ) 

И так далее.

Я довольно новичок в этом, так что это может быть простой вопрос, но у Googling нет ответов на меня. Кто-нибудь знает причину этого? Я использую PHP PDO сейчас, но я делал это прямо через функции MySQL раньше и то же самое происходило, поэтому я предполагаю, что это побочный продукт взаимодействия с MySQL.

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

Solutions Collecting From Web of "Как остановить MySQL от дублирования записи каждого столбца в возвращаемых массивах?"

Это зависит от функции, которую вы используете. Некоторые функции возвращают оба типа, другие возвращают только один из них.

Если вы используете PDOStatement->fetch , обратите внимание на необязательный аргумент $ fetch_style, который требуется.

Предположительно, это происходит после использования mysql_fetch_array (или аналогичного).

Вам нужно добавить флаг, чтобы указать, какой тип массива вы хотите вернуть, или PHP предполагает оба.

т.е. mysql_fetch_array($result_set, MYSQL_ASSOC|MYSQL_NUM|MYSQL_BOTH)

Ваша проблема mysql_fetch_array функцией mysql_fetch_array .

Если вы хотите только цифры, используйте:

 $row = mysql_fetch_array($result, MYSQL_NUM) 

Если вы хотите только текстовые индексы, используйте:

 $row = mysql_fetch_array($result, MYSQL_ASSOC) 

Я обычно использую MySQLi, но для PDO вы можете найти дополнительную информацию здесь: http://us3.php.net/manual/en/pdostatement.fetch.php

Это означает, что вы должны использовать это для текстовых индексов:

 $row = $statement->fetch(PDO::FETCH_ASSOC); 

И это для числовых индексов:

 $row = $statement->fetch(PDO::FETCH_NUM); 

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