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 中国語 Web サイトの他の関連記事を参照してください。