2016-07-31 120 views
3

pg_fetch_all()打印整数作为字符串

$result = pg_query($dbconn, 'SELECT * FROM domain'); 
$d = pg_fetch_all($result); 
var_dump($d); 

,其结果是

array(2) { 
    [0]=> 
    array(2) { 
    ["id"]=> 
    string(1) "1" 
    ["domainname"]=> 
    string(15) "stackoverflow.com" 
    } 
    [1]=> 
    array(2) { 
    ["id"]=> 
    string(1) "2" 
    ["domainname"]=> 
    string(13) "example.com" 
    } 
} 

这里的问题是,id s的显示为,即使他们都是整数的字符串。我怎样才能让他们自动整数?

+0

好的..我看到了.. nvm ..我很快就会删除这个!hehe xD – FirstOne

+0

@FirstOne,它是整数http://imgur.com/a/r8fW9谁将它转换为一个字符串并不重要,我喜欢它作为原始类型 – ilhan

+0

显示你的模式吗?我从来没有见过pg_fetch_all这样做 - 尽管它可能是var_dump,试试'print_r()'而不是 – alzee

回答

-1

您可以手动将字符串转换为适当的数字类型,并验证字符串表示的数字是否适合该数字类型。

尽管数据库内部使用的整数可以与php使用的整数类型的字节数相同,但是有太多特殊情况(例如返回到32位PHP二进制文件的64位数据库数字等),任何特定的自动转换策略都可以接受。更一般地说,PostgreSQL有numericdecimal类型,它们的“小数点前最多131072位”和“小数点后最多16383位”(见表8-2 [在PostgreSQL文档中])。 (https://www.postgresql.org/docs/9.1/static/datatype-numeric.html

+0

但是如果你使用MySQL可以将整数和字符串作为字符串自动获取https://jpauli.github.io/2014/07/ 21/php-and-mysql-communication-mysqlnd.html。 PostgreSQL也应该有一种方法。 – ilhan

+0

当然有。只需自动完成此操作即可。 – NovaDenizen