【问题标题】:Reading datypes correctly by PHP from Postgres通过 PHP 从 Postgres 正确读取数据类型
【发布时间】:2010-11-21 20:20:36
【问题描述】:

如何在 Postgres 中通过 PHP 编译整数数据?

我的整数是字符串,如下所示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'];
    }   

【问题讨论】:

    标签: php string postgresql types integer


    【解决方案1】:

    PHP 数据库扩展通常会将所有数据类型返回为字符串,因为某些 SQL 数据类型无法用 PHP 原生数据类型表示。

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

    【讨论】:

      【解决方案2】:

      您可以使用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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-28
        • 2021-02-24
        • 1970-01-01
        • 2016-08-31
        • 1970-01-01
        • 1970-01-01
        • 2012-03-21
        • 1970-01-01
        相关资源
        最近更新 更多