如何用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_prepare
和pg_execute
之后问题的根源。
while ( $row = pg_fetch_array( $result ) ) {
$user_id = $row['user_id'];
}
答案 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";
?>
进一步阅读: