Mengapa saya mendapatkan kolom yang sama dua kali di PHP saya | Kueri PostgreSQL? [duplikat]
Saya memiliki database Postgres tempat saya mengambil data dengan skrip PHP. Di dalam skrip ini saya terhubung melalui PDO:
$connection = new PDO('pgsql:host=' . $host . ';dbname=' . $database, $username, $password);
Kemudian, saya memiliki kueri yang seharusnya mencantumkan id
setiap contoh:
$query = 'SELECT id FROM my_table WHERE "myCondition" = TRUE';
Kemudian saya mendapatkan hasil dari kueri saya:
$result = $connection->prepare($query) or die($connection->error);
$result-> execute();
Dan akhirnya, saya mencetak hasil saya:
foreach($result AS $row) { echo var_dump($row);
};
Sekarang masalah saya adalah saya mendapatkan array dua nilai di browser saya untuk masing-masing $row
, meskipun saya hanya meminta untuk mengembalikan id
:
larik (2) {["id"] => string (3) "GNQ" [0] => string (3) "GNQ"}
Jadi entah bagaimana saya mendapatkan nilai kedua, sekali lagi dengan id
tetapi dengan pengenal kunci yang berbeda (dalam hal ini indeks). Apa yang saya lakukan salah di sini?
Jawaban
Ini mengembalikan nilai yang sama dua kali karena jenis pengambilan PDO. Default PDO::FETCH_BOTH
artinya "mengembalikan kolom seperti yang diindeks dari 0 dan dengan nama". Jika Anda hanya ingin mengembalikan indeks bernama, tambahkan parameter keempat ke konstruktor PDO dengan berbagai opsi (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]
);