从Postgres通过PHP正确读取数据类型

时间:2009-08-22 02:50:07

标签: php string postgresql types integer

如何用PHP编译Postgres中的整数数据?

我的整数是字符串,如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

我通过以下代码编译值,这显然是pg_preparepg_execute之后问题的根源。

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

2 个答案:

答案 0 :(得分:3)

PHP数据库扩展通常将所有数据类型作为字符串返回,因为某些SQL数据类型无法在PHP本机数据类型中表示。

示例:PostgreSQL BIGINT(8字节整数数据类型)将溢出int PHP类型(除非PHP使用64位支持进行编译),并转换为float这可能会失去准确性。

答案 1 :(得分:1)

您可以使用intval将字符串转换为整数:

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

或强制类型:

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

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

一些测试代码:

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

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

进一步阅读:

Type Jugging