2014-11-05 38 views
1

所以我hgave大问题。在我的基地,我有字段类型int4。 我只是查询像Postgre SQL + PHP与字符串类型回报fieldv数据INT4

SELECT * FROM "Cities" 

如果我做var_dump(pg_fetch_array($result, NULL, PGSQL_ASSOC));我可以看到我的ID字段(INT4)像 **(串)** ID。为什么它会返回所有值,如字符串? 谢谢。

回答

3

的差别来源于不同的PostgreSQL驱动程序从数据库中呈现所提取的数据的方式。
更具体地只使用在某些情况下字符串。

来解决这个问题,最快的方式是使用比较看起来像:
($id == 5) // true而不是
($id === 5) // false
假设$id="5";

也许你的驱动程序也可以被调整到返回不但字符串,但整数作为好。
如果您提供的驱动程序特定的信息也许有人可以帮助您更与司机的微调。

如果你使用的是PDO,那么这些将帮助:

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

第二行无关,与字符串,但建议。

+0

我使用笨freamework。我不认为驱动程序有问题.. – 2014-11-05 11:40:39

+0

@ user2051503这不是驱动程序的问题!这实际上是预期的行为。事情是,你期待别的什么...... – 2014-11-05 12:08:05

+0

那么我需要做什么?我需要手动为任何元素做intval()? – 2014-11-05 14:54:57