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

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-05 15:15:10342ブラウズ

How Can I Ensure MySQL Numeric and Integer Columns Are Returned as the Correct Data Type in PHP?

MySQL の数値列と整数列を PHP で整数に変換する

問題の概要

PHP クエリは、整数を扱う場合でも、多くの場合、すべての列を文字列として返します。または MySQL の数値。これは、複数のサービスで使用される JSON 出力など、特定の形式要件を持つデータを処理する場合に問題になる可能性があります。

一般的な誤解を反駁する

一部の情報源では数値型を返すことは不可能であると主張していますが、これは問題です。完全に真実ではありません。次の誤解は無視してください:

  • 型キャスト: コード内で値を手動でキャストするのは非効率的であり、不整合が生じる可能性があります。
  • 型付けが緩い: PHP の緩やかな型付けは、データが意図せずに変換される可能性があるため、信頼できる解決策ではありません。 strings.
  • ドライバーの制限: Linux 上の MySQL ネイティブ ドライバーは、数値型を返すことを完全にはサポートしていません。ただし、確実に正しく処理するための回避策があります。

解決策

この問題を解決する鍵は、PHP 用の mysqlnd ドライバーを使用することです。ネイティブ ドライバーとは異なり、mysqlnd は整数 (INTEGER、INT、SMALLINT、TINYINT、MEDIUMINT、BIGINT) および倍精度浮動小数点 (DOUBLE) 列の数値型を返すことをサポートしています。

mysqlnd のインストールと確認

mysqlnd を使用しているかどうかを確認するには、php を実行します。 -私。 pdo_mysql セクションに「mysqlnd」と記載されている場合、ドライバーは存在します。それ以外の場合は、次の手順に従ってインストールします:

Ubuntu:

  1. 古いドライバーを削除します: apt-get delete php5-mysql
  2. mysqlnd をインストールします: apt-get install php5-mysqlnd
  3. Apache を再起動します:service apache2 restart

存在を確認します: インストール後、php -i は pdo_mysql セクションに mysqlnd バージョンを表示するはずです。

PDO設定

さらに、次の PDO 設定が正しく設定されていることを確認してください:

  • PDO::ATTR_EMULATE_PREPARES は false である必要があります
  • PDO::ATTR_STRINGIFY_FETCHES は false である必要があります

戻り値型

  • FLOAT 列と DOUBLE 列は PHP float として返されます。
  • INTEGER 列は PHP 整数として返されます。
  • DECIMAL 列と NUMERIC 列は PHP 浮動小数点数として返されます。 strings.

mysqlnd と適切な PDO 設定を使用すると、MySQL テーブルにクエリを実行し、予期される形式で数値を取得できるようになります:

$result = $pdo->query('SELECT * FROM table');
$row = $result->fetch(PDO::FETCH_OBJ);

echo $row->integer_col; // 1 (integer)
echo $row->double_col; // 1.55 (float)
echo $row->decimal_col; // '1.20' (string)

以上がMySQL の数値列と整数列が PHP で正しいデータ型として返されることを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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