如何使用PHP 從MySQL 正確擷取整數和數位資料類型
使用PHP 查詢MySQL 資料庫時,確保以下內容至關重要:整數和數字資料類型按原樣返回,而不是作為字串返回。這對於資料完整性和與其他服務的兼容性至關重要。
不幸的是,預設情況下,PHP-MySQL 本機驅動程式將所有查詢結果轉換為字串。這個問題一直是許多爭論的主題,有些人聲稱這是一個實施限制,有些人則認為這是不正確的。不過,要考慮的關鍵因素是所使用的驅動。
解決方案:使用 MySQLnd 驅動程式
要解決此問題,需要從原生切換MySQL 驅動程式到 mysqlnd 驅動程式。 mysqlnd 驅動程式支援正確傳回整數和數字類型。
如何安裝和檢查mysqlnd
在Ubuntu 上,您可以使用以下命令安裝mysqlnd 驅動程式:
sudo apt-get remove php5-mysql sudo apt-get install php5-mysqlnd sudo service apache2 restart
要驗證是否正在驗證使用mysqlnd,請檢查php -i 的輸出。 pdo_mysql 部分現在應包含對 mysqlnd 的引用。
PDO 設置
此外,請確保正確配置以下PDO 設置:
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
返回值
使用mysqlnd 驅動程式並應用適當的PDO設定後,將根據下列規則傳回查詢結果:
範例
以下範例說明了整數和數值資料的正確行為檢索:
$pdo = new PDO(...); $stmt = $pdo->prepare('SELECT * FROM table'); $stmt->execute(); $result = $stmt->fetch(PDO::FETCH_OBJ); var_dump($result);
這將輸出具有以下屬性的對象:
object(stdClass)[915] public 'integer_col' => int 1 public 'double_col' => float 1.55 public 'float_col' => float 1.5 public 'decimal_col' => string '1.20' (length=4) public 'bigint_col' => string '18446744073709551615' (length=20)
以上是如何使用 PHP 從 MySQL 正確檢索整數和數字資料類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!