2013-02-20 159 views
7

我的PDO提取將所有內容作爲字符串返回。如何使用PDO從MySQL獲取正確的數據類型?

我有ID(int)和用戶名(VARCHAR)的用戶類。

當我嘗試以下SQL請求

$db->prepare('SELECT * FROM users WHERE id=:id_user'); 
$db->bindParam(':id_user', $id_user); 
$db->execute(); 
$user_data = $db->fetch(PDO::FETCH_ASSOC); 

和後續代碼var_dump($ USER_DATA),id參數是一個字符串。我該如何做到這一點,所以PDO尊重MySQL的正確數據類型?

+0

你會在PHP與奮鬥。我建議你在php中投射你期待的東西。 – Stevo 2013-02-20 10:10:35

+0

你的意思是在每個請求之後我應該手動intval()/ strval()每個參數嗎? – Lukmo 2013-02-20 10:11:41

+0

是的,我通常做'echo(int)「1」;'或回聲(字符串)「1」; – Stevo 2013-02-20 10:14:52

回答

3

您可以使用不同的fetch_style。如果你有一個用戶類,你可能會迫使PDO返回用戶類的實例與

$statement->fetchAll(PDO::FETCH_CLASS, "User"); 

您現在可以照顧性驗證和鑄造的User類,它屬於內。

相關:

+0

非常感謝,這是一個非常好的主意,它會產生更清晰的代碼。 – Lukmo 2013-03-18 08:54:06

相關問題