ホームページ > バックエンド開発 > PHPチュートリアル > MySQL の数値列が PHP の整数および数値として返されることを確認するにはどうすればよいですか?

MySQL の数値列が PHP の整数および数値として返されることを確認するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-08 06:44:10
オリジナル
979 人が閲覧しました

How to Ensure MySQL Numeric Columns Return as PHP Integers and Numerics?

MySQL から整数列と数値列を PHP 整数と数値として返す

問題:
クエリ結果がすべての列を文字列型として返すで整数列と数値列が定義されているにもかかわらず、

複雑さ:
この課題は、ドライバー実装の制限から生じます。一部のドライバーは、数値型を PHP 整数または数値として返すことをサポートしていないため、データベースのデータ型と PHP 表現の間に不一致が生じます。

解決策:
これを解決する鍵問題は、mysqlnd ドライバーが PHP に使用されていることを確認することにあります。 mysqlnd は、数値型を正しく返すために必要なサポートを提供する MySQL ネイティブ ドライバーです。

mysqlnd のインストール方法:
Ubuntu システムの場合:

  1. 現在のネイティブ ドライバーを削除します: apt-get delete php5-mysql
  2. mysqlnd をインストールします: apt-get install php5-mysqlnd
  3. Apache を再起動します: service apache2 restart

mysqlnd が使用されているかどうかを確認します:
インストール後、実行しますphp -i を使用して、mysqlnd が使用されていることを確認します。出力で次の行を探します:

PDO Driver for MySQL => enabled
Client API version => mysqlnd 5.0.10 - 20111026 -
ログイン後にコピー

重要な PDO 設定:
数値を適切に処理するには、2 つの PDO 設定が重要です:

  1. PDO::ATTR_EMULATE_PREPARES: セットパフォーマンスを向上させ、潜在的な問題を回避するには、これを false に設定します。
  2. PDO::ATTR_STRINGIFY_FETCHES: これを無効にすると、ドライバーが数値を文字列にキャストできなくなります。

これらのフラグを設定すると、クエリ結果は期待どおりに整数列と数値列を返すようになります。戻り値の例は次のとおりです:

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 までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート