2009-08-22 7 views
2

Wie kompilieren Sie Integer-Daten in Postgres by PHP?PHP korrekt lesen von Postgres

Meine ganze Zahlen sind Zeichenfolge wie die folgende Show von var_dump ($_SESSION)

'logged_in' => int 1 
    'user_id' => string '9' (length=1)     // should be int 
    'a_moderator' => string '0' (length=1)    // should be int 

ich die Werte durch den folgenden Code zu kompilieren, die offensichtlich die Quelle des Problems nach pg_prepare und pg_execute ist.

while ($row = pg_fetch_array($result)) { 
     $user_id = $row['user_id']; 
    } 
+0

Vielen Dank für Ihre Antworten! –

Antwort

1

Sie können Strings in Integer konvertieren intval mit:

$str = "5"; 
$num = intval($str); 

oder nach Art Zwang:

$str = "5"; 
$num = (int) $str; 

//this works too 
$num = (integer) $str; 

einige Testcode:

<?php 
    $str = "10"; 
    $num = intval($str); 
    //$num = (int)$str; 

    if ($str === 10) echo "String"; 
    if ($num === 10) echo "Integer"; 
?> 

Weiterführende Literatur:

Type Jugging

3

Es ist Üblichen für Erweiterungen PHP-Datenbank alle Datentypen als String zurück, weil einige SQL-Datentypen können nicht in PHP nativen Datentypen dargestellt werden.

Beispiel: PostgreSQL BIGINT (8-Byte-Ganzzahl-Datentyp) würde den Überlauf int PHP-Typ (es sei denn, PHP und mit 64-Bit-Unterstützung kompiliert wird) und als float gegossen werden, die Genauigkeit verlieren.