Neden aynı sütunu PHP'mde iki kez alıyorum | PostgreSQL sorgusu? [çiftleme]
PHP komut dosyasıyla veri aldığım bir Postgres veritabanım var. Bu komut dosyasının içinde PDO aracılığıyla bağlanıyorum:
$connection = new PDO('pgsql:host=' . $host . ';dbname=' . $database, $username, $password);
Ardından, id
her bir örneğin listelemesi gereken bir sorgum var :
$query = 'SELECT id FROM my_table WHERE "myCondition" = TRUE';
Sonra sorgumun sonucunu alıyorum:
$result = $connection->prepare($query) or die($connection->error);
$result-> execute();
Son olarak, sonuçlarımı yazdırıyorum:
foreach($result AS $row) { echo var_dump($row);
};
Şimdi benim sorunum, tarayıcımda her biri için iki değer dizisi $row
almam, sadece geri dönmeyi istememe rağmen id
:
array (2) {["id"] => string (3) "GNQ" [0] => string (3) "GNQ"}
Yani bir şekilde ikinci bir değer alıyorum, yine id
ama farklı bir anahtar tanımlayıcıyla (bu durumda indeks). Burada neyi yanlış yapıyorum?
Yanıtlar
PDO getirme türü nedeniyle aynı değeri iki kez döndürür. Varsayılan, PDO::FETCH_BOTH
"0'dan indekslenmiş olarak ve adlarla sütunları döndür" anlamına gelir. Yalnızca adlandırılmış dizinleri döndürmek istiyorsanız, seçenekler dizisi ile PDO yapıcısına dördüncü parametreyi ekleyin (https://www.php.net/manual/en/pdo.construct.php).
$connection = new PDO( 'pgsql:host=' . $host . ';dbname=' . $database, $username,
$password,
[\PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_OBJ]
);