mit PHP boolean aus DB abfragen

Moinsen Gemeinde,
ich bin kürzlich über Folgendes gestolpert:
Ich habe eine PG-DB mit irgendeiner Tabelle, die u.a. eine Spalte vom Typ boolean enthält. Einträge in diese Spalte sind defaultmässig false, also
“…column_name boolean NOT NULL DEFAULT false…”.
Wenn ich jetzt diese Spalte über die Konsole abfrage, erhalte ich als Ergebnis “f” (ohne Anführungszeichen). So weit so gut!
Starte ich aber dieselbe Abfrage von PHP aus, dann erhalte ich nichts! Das Ergebnis ist quasi leer, als ob in der Tabelle überhaupt nichts drinstehen würde.
Bin ich mal wieder zu hohl oder steckt da irgendetwas Sinnvolles dahinter?
Jetzt bin ich mal gespannt…
Thx!

Kann ich nicht nachvollziehen:

test=# select * from bool_test ;
 bool_col
----------
 f
(1 Zeile)

und

$sql="select * from bool_test;";
$result = pg_query($sql) or die('Abfrage fehlgeschlagen: ' . pg_last_error());
$array=pg_fetch_array($result, 0);

echo "$array[bool_col]";

bringt ein ‘f’ (ohne ') auf den Bildschirm.

Andreas

Zeig das mal bitte an einem Beispiel und füg deinen Code ein.

Konsole:
SELECT measurement_confirmed FROM measurement_table WHERE measurement_id = 9;
measurement_confirmed

f
(1 row)

PHP:
$select = $dbh -> query(“SELECT measurement_confirmed FROM measurement_table WHERE measurement_id = 9”);
$result_arr = $select->fetchAll(PDO::FETCH_ASSOC);
print_r($result_arr);
…und es erscheint:
Array ( [0] => Array ( [measurement_confirmed] => ) )

Voila. Schnall ich nicht…

Versuch mal einen var_dump() bzw. prüfe mal explizit ob der Wert der Variable false ist. Also mit 3 = prüfen.

var_dump() ergibt tatsächlich bool(false) - guter Tip.
Dann ist das Ergebnis scheinbar nur “optisch leer”, warum auch immer.
Übrigens, falls der Wert in der Tabelle “true” ist, gibt PHP eine 1 aus.

Das habe ich mir fast so gedacht mit dem leeren Feld. Das wird aber von PHP falsch zugewiesen, die richtige Information sowohl über den Wert wie über den Datentyp wird von der Datenbank mitgeliefert.