PgSQL アダプターに問題があります。私はネイティブ ドライバーを使用しており、列の型が整数またはブール値であっても、メソッド pg_fetch_* は文字列のみを返します。
整数の場合、大きな問題ではありません。単純なキャストです。
TRUE の場合は「t」、FALSE の場合は「f」という文字列が返されるため、本当の問題はブール値にあります。
OK、簡単な解決策は、ブール値フィールドがあるたびにこれを検証することですが、それは最も賢い方法ではありません...
特定のケースの 1 つは、MySQL で実行されている巨大なアプリケーションを移行して PgSQL を実行したい場合で、変更しなければならない条件がたくさんあります。
Google で何かを見つけようとしましたが (間違ったキーワードの組み合わせを使用したかどうかはわかりません)、失敗しました。
サンプルコード:
$db = pg_connect("host=localhost dbname=**** user=**** password=**** port=5432") or die("Could not connect");
pg_set_error_verbosity(PGSQL_ERRORS_VERBOSE);
$sql = 'SELECT * FROM mesa';
$result = pg_query($db, $sql);
var_dump(pg_last_error($db));
$data = array();
while($row = pg_fetch_assoc($result)) {
$data[] = $row;
}
var_dump($data);
出力:
array (size=10)
0 =>
array (size=3)
'numero' => string '2' (length=1)
'max_pessoas' => string '8' (length=1)
'status' => string 't' (length=1)
1 =>
array (size=3)
'numero' => string '3' (length=1)
'max_pessoas' => string '8' (length=1)
'status' => string 't' (length=1)
続けてください。ただし、「numero」は整数、「status」はブール値です。