Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgre SQL+;PHP返回fieldv int4上字符串类型的数据_Php_Postgresql - Fatal编程技术网

Postgre SQL+;PHP返回fieldv int4上字符串类型的数据

Postgre SQL+;PHP返回fieldv int4上字符串类型的数据,php,postgresql,Php,Postgresql,所以我有个大问题。在我的基础中,我有一个类型为int4的字段。 我只是想问一下 SELECT * FROM "Cities" 如果我执行var_dump(pg_fetch_数组($result,NULL,PGSQL_ASSOC))我可以看到我的字段id(int4)如下 **(string)**id.为什么会像string一样返回所有值? 谢谢。不同的PostgreSQL驱动程序显示从数据库提取的数据的方式不同。 更具体地说,在某些情况下仅使用字符串 最快的解决方法是使用如下比较: ($id=

所以我有个大问题。在我的基础中,我有一个类型为int4的字段。 我只是想问一下

SELECT * FROM "Cities" 
如果我执行
var_dump(pg_fetch_数组($result,NULL,PGSQL_ASSOC))我可以看到我的字段id(int4)如下
**(string)**id.为什么会像string一样返回所有值?

谢谢。

不同的PostgreSQL驱动程序显示从数据库提取的数据的方式不同。
更具体地说,在某些情况下仅使用字符串

最快的解决方法是使用如下比较:
($id==5)//true
而不是
($id==5)//false

假设
$id=“5”

也许您的驱动程序也可以调整为不仅返回字符串,还返回整数。
如果您提供特定于驱动程序的信息,也许有人可以在驱动程序的微调方面为您提供更多帮助

如果您正在使用PDO,那么这些将有助于:

$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

第二行与字符串无关,但推荐使用。

我使用的是codeigniter freamework。我认为驱动程序没有问题。@user2051503这不是驱动程序的问题!这实际上是预期的行为。问题是你在期待其他的东西…那么我需要做什么?我需要为任何元素手动执行intval()?首先,我将尝试
ATTR\u STRINGIFY\u FETCHES
技巧,看看这是否有帮助。否则,您的用例是什么?为什么需要
intval