PDO возвращает неверные, но повторяющиеся данные. Ключ отсутствует в базе данных.

Я новичок в использовании $ 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);