簡體   English   中英

PDO SQLSRV和PDO MySQL在獲取int或float時返回字符串

[英]PDO SQLSRV and PDO MySQL return strings when fetching int or float

PDO MS SQL Server和PDO MySQL在您獲取時都返回一個字符串數組,即使列的SQL類型是數字類型(如int或float)。 我成功地解決了這個問題,但我想了解為什么他們這樣開始設計。 是因為PDO本身不支持它(或之前不支持它)?

使用PDO MySQL ,底層C API在調用mysql_fetch_row()時返回字符串結構 由於PHP是一種松散類型的語言,可以根據需要自動轉換為整數,我懷疑PDO開發人員選擇按原樣返回它們。 這比查找每個列類型並動態轉換為整數/浮點要快。

特別是關於float,當從字符串轉換時,本機PHP float可能與原始存儲值不同。 例如,MySQL列支持精度,而PHP浮點數則不支持。 將浮動字符串作為字符串從數據庫中保留,可以進行更多控制(例如,選擇使用具有不同精度的庫 )。

因為PDO本身不支持它(或之前不支持它)?

差不多但是對於mydsql而言,這不是因為PDO而是因為mysql C API。

由於它已更改 ,如果您針對基於mysqlnd的PDO實例運行本機 准備語句PDO可以返回正確的數據類型

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM