ホームページ >データベース >mysql チュートリアル >PHP を使用して MySQL から整数および数値データ型を適切に取得する方法

PHP を使用して MySQL から整数および数値データ型を適切に取得する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-08 21:02:14808ブラウズ

How to Properly Retrieve Integer and Numeric Data Types from MySQL Using PHP?

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 設定が適用されると、クエリ結果は次のルールに従って返されます。

  • 浮動小数点型 ( FLOAT、DOUBLE) は PHP 浮動小数点数として返されます。
  • 整数型 (INTEGER、INT、 SMALLINT、TINYINT、MEDIUMINT、BIGINT) は PHP 整数として返されます。
  • 固定小数点型 (DECIMAL、NUMERIC) は PHP 文字列として返されます。

次の例は、整数および数値データの取得:

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。