1

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」はブール値です。

4

1 に答える 1

0

実際、PHP は true の場合は 't' を返し、false の場合は 'f' を返します。これらの独自の処理を作成するか、それを抽象化するフレームワークを使用する必要があります。残念ながら、少なくとも PHP 4.0 以降では、この言語が機能していました。

于 2013-04-11T09:23:09.510 に答える