PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了查询结果中的PHP和PostgreSQL标准类型.为什么总是字符串?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

使用标准的php5-pgsql驱动程序,结果是,至少使用ubuntu 10.04上的PHP设置,结果值未映射到标准PHP类型.那是

> postresql :: Integer =>的PHP :: INT
> postresql :: real => PHP :: float
>等

并返回要转换为字符串的结果值.当系统的语言环境与数据库的语言环境不一致时,有时会引起很多麻烦.

是否有可能以某种方式在PHP中获得适当的转换?如果没有,那么对为什么的任何见解将非常欢迎!

编辑:

PDO解决了“ postresql :: Integer => PHP :: int”问题,但不适用于ex. “ postresql :: real => PHP :: float”似乎是因为PDO使用了本人理解为pgsql的本机驱动程序.就我而言,编码问题不是问题,唯一需要的是精确地映射类型,或者至少尽可能地映射类型!

$sql = 'SELECT Integer_field, numeric_field_10_2 FROM table';
foreach ($dbh->query($sql) as $row) {
    var_dump($row);
}
----------------------------------------
array(4) {
  ["Integer_field"]=>int(79)
  ["numeric_field_10_2"]=>String(6) "100.12"
}

谢谢,我

解决方法:

这是从C API和POSTGRes客户端协议继承的问题.结果在后端库中以字符串形式提供.兼容的编码应该不是问题,但是您是对的,这可能是一个问题.

您可以使用手动转换,也可以信任PHP中的自动转换,但真正的问题只是正确地设置编码设置.您可以基于每个数据库或每个集群设置POSTGRes的编码,我个人建议使用UTF-8.

转换现有数据库很麻烦,它通常涉及完全转储和完全导入新数据库.

pg_client_encoding会告诉您当前的POSTGRes编码,但是对PHP编码没有帮助.如果您不能使用兼容的编码,则可能值得创建一个使用iconv转换字符串数据的包装器.

最后,您可以使用备用客户端库.我相信PHP的PDO POSTGRes库可以更好地处理此问题.

http://us.php.net/manual/en/book.pdo.php

大佬总结

以上是大佬教程为你收集整理的查询结果中的PHP和PostgreSQL标准类型.为什么总是字符串?全部内容,希望文章能够帮你解决查询结果中的PHP和PostgreSQL标准类型.为什么总是字符串?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: