ホームページ > データベース > mysql チュートリアル > MySQL の数値が PHP で文字列として返されるのはなぜですか? それを修正するにはどうすればよいですか?

MySQL の数値が PHP で文字列として返されるのはなぜですか? それを修正するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-05 07:29:11
オリジナル
712 人が閲覧しました

Why Are My MySQL Numeric Values Returned as Strings in PHP, and How Can I Fix It?

PHP で MySQL から整数と数値を返す際の不一致を解決する

PHP を使用して MySQL からデータを取得する場合、困惑することがあります。整数列と数値列が文字列として返されるという型の不一致が発生します。

ドライバーの問題

データベース接続に使用されている基礎となるドライバーを特定することが重要です。この問題は多くの場合、ネイティブ MySQL ドライバーの使用に起因しており、このドライバーには数値型を整数として返す機能がありません。

MySQLnd ドライバーの識別

次の手順に従ってください。ネイティブ MySQL ドライバーを使用して、php -i の出力を検査します。 pdo_mysql セクションに「mysqlnd」に関する記述がない場合は、ネイティブ ドライバーを使用している可能性があります。

MySQLnd ドライバーへの切り替え

解決策は次のとおりです。 mysqlnd ドライバーに切り替えると、数値型を正しく返すことがサポートされます。 Ubuntu では、これは次の方法で実現できます。

sudo apt-get remove php5-mysql
sudo apt-get install php5-mysqlnd
sudo service apache2 restart
ログイン後にコピー

PDO 設定

mysqlnd ドライバーがインストールされたら、次の PDO 設定が正しく設定されていることを確認します。

$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
ログイン後にコピー

返品されました値

上記の手順を実装すると、MySQL クエリの結果は期待どおりの数値型を返します。

  • PHP 浮動小数点としての浮動小数点型 (FLOAT、DOUBLE)
  • 整数型 (INTEGER、INT、SMALLINT、TINYINT、MEDIUMINT、 BIGINT) として PHP 整数
  • 文字列としての固定小数点型 (DECIMAL、NUMERIC) (注: 64 ビットを超える BIGINT も文字列として返されます)

戻り値の例次のようになります:

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)
ログイン後にコピー

以上がMySQL の数値が PHP で文字列として返されるのはなぜですか? それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート