2012-11-04 9 views
0

我的PgSQL適配器有問題。我使用本地驅動程序,並且方法pg_fetch_ *僅返回字符串,即使列類型是整數或布爾值。帶有錯誤返回類型的PHP pg_fetch_ *

對於整數,不是一個大問題,它只是一個簡單的演員。

真正的問題是布爾值,因爲它返回TRUE的字符串't'和FALSE的'f'。

好,簡單的解決方法是做一個驗證這每一次我有布爾字段,但它不是最聰明的一個...

一個特殊的情況是,我希望遷移在MySQL運行的巨大的應用做PgSQL,並且會有很多條件,我不得不改變。

我試圖在Google上找到一些東西,但是(我不知道我是否使用了錯誤的關鍵字組合)是UNsuccessfull。

示例代碼:

$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' 是一個整數, '狀態' 是一個布爾值。

+0

「原生驅動程序」。你的意思是內置於PHP的驅動程序,http://www.php.net/manual/en/book.pgsql.php?如果是這樣:你使用什麼PHP版本和哪個PostgreSQL版本? –

+0

另請參見:請顯示您的代碼。運行查詢的PHP和SQL,以及顯示結果是字符串的PHP。此外,當你說出「我在Google上發現了某些東西」時...... *鏈接到它*所以我們知道你在說什麼。 –

+0

對不起...我說我沒有在Google上找到任何東西,只是對PHP手冊發表評論: http://br.php.net/manual/it/function.pg-fetch-assoc.php#108957 –

回答

0

PHP實際上確實返回't'爲真,'f'爲false。您需要創建自己的處理或使用爲您抽象的框架。不幸的是,至少PHP 4.0以後,這種語言的工作方式......