ホームページ >バックエンド開発 >PHPチュートリアル >MySQL の整数値が PDO で文字列として取得されるのはなぜですか? それを修正するにはどうすればよいですか?

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

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-19 00:57:13198ブラウズ

Why Are My MySQL Integer Values Retrieved as Strings in PDO, and How Can I Fix It?

PDO を使用した MySQL での非数値データ取得のトラブルシューティング

PDO を使用して MySQL データベースにクエリを実行すると、整数値が取得される状況が発生する場合があります。数値型ではなく文字列として。 PDO::ATTR_STRINGIFY_FETCHES 属性を変更しようとしても、MySQL ドライバーでサポートされていないことを示すエラーが表示されます。この問題は、PHP 5.3 で導入された MYSQLND ドライバーが他のドライバーとは異なる方法でデータ型変換を処理するために発生します。

これを解決するには、PDO のプリペアド ステートメント エミュレーション機能を無効にする必要があります。これを行うには、PDO オブジェクトの作成時に PDO::ATTR_EMULATE_PREPARES 属性を false に設定します。

new PDO($dsn, $user, $pass, array(
    PDO::ATTR_EMULATE_PREPARES => false
))

プリペアド ステートメントが使用される場合、MYSQLND はデータベースの数値をネイティブ PHP タイプに変換し、次のことを可能にします。文字列ではなく整数を直接操作します。 PDO::ATTR_STRINGIFY_FETCHES は MySQL ドライバーには適用できないことに注意することが重要です。エミュレーションをオフにすることで、数値データ型が正しく処理されるようになり、追加の文字列変換の必要がなくなります。

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

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