在使用資料庫時,我們經常會遇到將數值作為字串而不是預期的數字資料類型檢索的問題。在 MySQL 中使用 PDO(PHP 資料物件)時,這種情況很常見。
PDO 提供了一個名為 PDO::ATTR_STRINGIFY_FETCHES 的屬性,該屬性旨在處理此轉換,但它不適用於 MySQL 驅動程式。這讓我們想知道為什麼 PDO 在 MySQL 中傳回數值字串。
答案在於 PDO 的模擬設定。預設情況下,PDO 模擬準備好的語句以與舊驅動程式相容。但是,此模擬可能會導致數值以字串形式傳回。
為了避免這種情況,我們需要透過將 PDO::ATTR_EMULATE_PREPARES 設定為 false 來停用模擬:
$pdo = new PDO($dsn, $user, $pass, [ PDO::ATTR_EMULATE_PREPARES => false ]);
使用模擬停用時,MySQL將傳回預先準備語句的本機資料類型,確保將數值檢索為不帶任何字串的數值資料
需要注意的是,在使用資料庫時使用準備好的語句通常是一種很好的做法,可以防止SQL 注入漏洞並提高效能。
以上是為什麼 PDO 將 MySQL 數字值作為字串傳回,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!