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