Neden aynı sütunu PHP'mde iki kez alıyorum | PostgreSQL sorgusu? [çiftleme]

Aug 18 2020

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, idher 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 $rowalmam, 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 idama farklı bir anahtar tanımlayıcıyla (bu durumda indeks). Burada neyi yanlış yapıyorum?

Yanıtlar

1 deoomen Aug 18 2020 at 05:51

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]
);