PDO を使用して MySQL から数値データ型を取得する
PDO と MySQL を使用すると、データベースから取得した数値が数値データ型ではなく文字列として返されます。この不一致は、PHP データベース オブジェクト (PDO) 拡張機能のデフォルトの動作が原因で発生する可能性があります。
なぜ数値ではなく文字列を使用するのですか?
残念ながら、次のようなことが比較的一般的です。データベースにクエリを実行するときに、数値の代わりに文字列を受け取ります。これは、PDO 拡張機能が通常、サポートされているすべてのデータベース ドライバーとの互換性を確保するためにデータベースの数値を文字列に変換するために発生します。
文字列変換を無効にする
PDO による文字列化を防止するには数値を使用して、PDO 属性 PDO::ATTR_EMULATE_PREPARES を変更できます。この属性を false に設定すると、プリペアド ステートメント エミュレーションを無効にし、MySQL が数値型を含むネイティブ データ型を返すことができるようになります。
$dsn = 'mysql:dbname=database;host=localhost'; $pdo = new PDO($dsn, $user, $pass, array( PDO::ATTR_EMULATE_PREPARES => false ));
PDO::ATTR_STRINGIFY_FETCHES
PDO::ATTR_STRINGIFY_FETCHES 属性は MySQL PDO ドライバーには適用できません。この属性は、ネイティブ データ型ではなく文字列を返すことをサポートする他のデータベース ドライバーを対象としています。
したがって、PDO のプリペアド ステートメント エミュレーションを無効にすることで、数値がネイティブ データ型として返され、文字列化が防止され、許可されるようになります。データを正しく扱うことができます。
以上が文字列変換を行わずに PDO を使用して MySQL から数値データ型を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。