Я новичок в использовании $ pdo-заявлений, поэтому может быть что-то простое, я еще не читал на php.net. Я получаю дубликаты результатов при запросе базы данных.
Результат:
[0] => Array ( [umeta_id] => 31 [0] => 31 [user_id] => 2 [1] => 2 [meta_key] => fbmeta [2] => fbmeta [meta_value] => someMetaValueStuff; [3] => someMetaValueStuff; )
Запрос довольно прост:
function getData(){ global $pdo; $query = $pdo->prepare('SELECT * FROM usermeta WHERE meta_key = "fbmeta" LIMIT 0,30'); $query->execute(); return $query->fetchAll(); } print_r( getData() );
Проблема в том, что именованные ключи ( umeta_id
, user_id
, meta_key
, meta_value
) существуют, цифровые клавиши – нет. Почему запрос возвращает их? И как я могу предотвратить их возврат?
Это не дубликаты, это всего лишь текущий FETCH_MODE
который вы используете. Чтобы получить как ассоциативные ключи, вам нужно указать как таковые; по умолчанию он выбирается как для обоих.
Используйте так:
$query->fetchAll(PDO::FETCH_NUM); // to fetch with numeric indexes $query->fetchAll(PDO::FETCH_ASSOC); // to fetch with associative indexes
fetchAll docs
получать документы
Это не дубликаты данных. fetchAll
возвращает данные в числовом массиве, а также в ассоциативный массив.
См. Документы
Используйте это для извлечения только ассоциативного массива
return $query->fetchAll(PDO::FETCH_ASSOC);