2016-06-22 3 views
2

$allrows = $pdo->fetchAll(); // select * from ....Без учета нумеруются индексные элементы PDO :: fetchAll()

Я хочу, чтобы преобразовать эту $allrows в формате JSON, выполнив:

echo (json_encode($allrowl,JSON_PRETTY_PRINT));

Моя проблема заключается в том, что этот fetchAll не только извлекает данные как ассоциированный массив, а также индексированный массив для каждого элемента, следовательно, повторяющиеся элементы.

[ 
    { 
     "org_id": "1", 
     "0": "1", 
     "category": "A", 
     "1": "A", 

    }, 
    { 
     "org_id": "2", 
     "0": "2", 
     "category": "A", 
     "1": "A", 

    } 
] 

спасибо.

+2

вам нужно [ 'PDO :: FETCH_ASSOC'] (https://phpdelusions.net/pdo/fetch_modes#FETCH_ASSOC). его можно установить либо как параметр PDOStatement :: fetchAll(), либо как режим по умолчанию один раз для всех, в качестве опции подключения, что очень удобно. –

+0

Мужчины, большое вам спасибо, что потратили впустую –

ответ

3

Это потому, что режим выборки по умолчанию - FETCH_BOTH. Измените свой режим на FETCH_ASSOC, и вы получите только нечисловые клавиши.

Предполагая, что $pdo является PDOStatement, установите его так, как показано на рисунке.

$pdo->setFetchMode(PDO::FETCH_ASSOC); 

Вы также можете установить его в заявлении выборки:

$pdo->fetchAll(PDO::FETCH_ASSOC); 
+0

woah спасибо, Рэй, я делаю много циклов манипуляции только для этого. –

2

Использование PDO::FETCH_ASSOC получить только ассоциативные массивы:

$allrows = $pdo->fetchAll(PDO::FETCH_ASSOC); 
+0

woah спасибо aynber, я делаю много циклов манипуляции только для этого, @Ray ответил первым, но я дал вам upvote. –

+0

нет метода fetchAll() в классе PDO. таким образом, скорее всего, этот код не будет работать –

+3

@YourCommonSense http://php.net/manual/en/pdostatement.fetchall.php Предполагая, что переменная '$ pdo' является« PDOStatement » – Ray

Смежные вопросы