18

PHP コードをmysql(5.5 で非推奨)から に移行していますPDO_MySQL。ただし、mysql_fetch_row整数をPDOStatement::fetch返しますが、数値の文字列を返します。PDO を前者のように動作させるにはどうすればよいですか?

の結果mysql_fetch_row:

array(1) {
  ["id"]=>
  int(1)
}

の結果PDOStatement::fetch:

array(1) {
  ["id"]=>
  string(1) "1"
}
4

3 に答える 3

13

PDO::ATTR_EMULATE_PREPARES緩やかに型付けされた PHP で本当に必要な場合は、false に設定します。

SUMのいずれかでintを返す場合mysql_fetch_row(私はチェックすることを気にしませんでした)-次に、次のような魔法if (ctype_digit($val)) $row[$key] = (int)$val;を行います-DBALで行うことができます

プリペアド ステートメントの仕組みを理解している限り、データの送信と取得に同じパケット構造を使用し、このパケットにはデータ型が含まれています。

サーバーは、要求の種類に応じて、ネイティブと mysqlnd の 2 つの形式でデータを返すことができるようです。後者はクライアント ライブラリによって解釈され、結果の値をキャストできます。

于 2013-04-21T08:53:24.133 に答える