2016-07-11 85 views
2

PDO MS SQL Server和PDO MySQL的PDO SQLSRV和PDO的MySQL返回字符串時,您將獲取返回字符串數組,即使列的SQL類型的意思是數字類型,如int或浮動。我設法解決了這個問題,但我想知道爲什麼他們是以這種方式開始設計的。是否因爲PDO本身不支持它(或以前不支持它)?獲取當整數或浮點數

+0

類型列無所謂,它只是定義了可以存儲在它,而不是當你從獲取它有什麼地方返回什麼類型。默認情況下,PDO返回的所有內容都是一個字符串,PHP雖然是類型轉換,所以'$ var = 10;'和'$ var =「10」;'(一個整數和一個字符串,都被賦值爲10)都是視爲數字。 – Qirel

回答

0

隨着PDO MySQL the underlying C API返回a structure of strings時調用mysql_fetch_row()。由於PHP是一種鬆散類型的語言,必要時會自動轉換爲整數,所以我懷疑PDO開發人員選擇按原樣返回它們。這比查找每個列類型並動態地轉換爲整數/浮點數要快。

具體地關於浮動,從字符串轉換時的本機PHP浮子可以是比原來的存儲的值不同。例如,MySQL列支持精度,而PHP浮點不支持。將數據庫中的浮點數作爲字符串離開,可以更好地控制(例如選擇以不同的精度使用a library)。

+0

還有一個準備好的聲明 –

0

因爲PDO本身不支持它(或以前不支持它)?

很多是的,但對於mydsql它不是因爲PDO而是因爲mysql C API。

既然changed,時刻PDO can return correct datatypes如果你運行一個本地事先準備好的聲明針對mysqlnd基PDO實例。