今天我發現我們的代碼似乎與PDO中的更改不兼容。在PHP < 5.6中,從PDOStatement
到fetch
和fetchAll
的結果集都返回了其值爲字符串或空值的行。我們的代碼依賴於這個屬性。PHP:7 PDO提取(全部)嘗試將類型轉換爲關聯類型
前一段時間我們更新到PHP 7.事實證明,PDO現在試圖將的某些數據類型轉換爲其他關聯類型。例如,FLOAT
列在PDOStatement
結果集中創建浮點值。並且TINYINT
列在結果集中創建一個整數值。有趣的是,一個BIGINT
或一個大的INT UNSIGNED
顯示爲一個字符串,當它不能被顯示爲一個整數時,某些其他類型(如DECIMAL
)不會被轉換爲任何東西。他們仍然是絃樂。我認爲這是一個普遍認同的原則,即將數據類型從MySQL數據庫轉換爲PHP數據類型是有問題的,不應該由PHP本身執行,但顯然PHP 7決定不然。
因此,PHP 7的PDO引入了一組轉換規則,它在內部使用它來轉換從數據庫中選擇的值,但是這使我的代碼庫變得困難,並且由於這些轉換規則的不一致性,我寧願不更改我的代碼庫適合他們。有沒有可能的某種設置或標誌,我可以切換,以防止PDO轉換它提取的值?
之前,我可以發誓,至少數在那裏投入實際的數字相當長一段時間......!? – deceze
@deceze你可以隨時查看我的[PDO百科全書](https://phpdelusions.net/pdo#returntypes)的說明:) –
那麼他們可能已經開始使用ND而不會注意到了嗎? :P –