2014-11-05 45 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

相關問題