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
) существуют, числовые клавиши этого не делают. Почему запрос возвращает их? И как я могу предотвратить их возврат?
Ответы
Ответ 1
Он не дублирует, это просто текущий FETCH_MODE
, который вы используете. Чтобы получить как ассоциативные ключи, вам нужно указать как таковые; по умолчанию он выбирается как для обоих.
Используйте так:
$query->fetchAll(PDO::FETCH_NUM); // to fetch with numeric indexes
$query->fetchAll(PDO::FETCH_ASSOC); // to fetch with associative indexes
fetchAll docs
извлечь документы
Ответ 2
Это не дубликаты данных fetchAll
возвращает данные в числовом массиве, а также ассоциативный массив.
Смотрите Документы
Используйте это для извлечения только ассоциативного массива
return $query->fetchAll(PDO::FETCH_ASSOC);