Php PDO+;MySQL总是返回字符串,但是MsSQL呢?
使用MySQL时,PDO总是以字符串形式返回字段值。当使用另一个数据库(如MSSQL)时,PDO是否一致 如果没有,是否有一个标志强制PDO始终返回字符串(为了一致性)?还是最好为所有值返回本机类型Php PDO+;MySQL总是返回字符串,但是MsSQL呢?,php,mysql,sql-server,pdo,Php,Mysql,Sql Server,Pdo,使用MySQL时,PDO总是以字符串形式返回字段值。当使用另一个数据库(如MSSQL)时,PDO是否一致 如果没有,是否有一个标志强制PDO始终返回字符串(为了一致性)?还是最好为所有值返回本机类型 据我所知,Drupal使使用PDO使用不同的数据库成为可能。它执行必要的转换,使SQL语句与不同的语法兼容。但是它如何处理查询结果中的数据类型呢?据我所知,这取决于数据库引擎 不久前,PDO会为Postgres中的布尔字段返回一个t或f字符串,我隐约记得上次使用它时它返回的是true或false布尔
据我所知,Drupal使使用PDO使用不同的数据库成为可能。它执行必要的转换,使SQL语句与不同的语法兼容。但是它如何处理查询结果中的数据类型呢?据我所知,这取决于数据库引擎 不久前,PDO会为Postgres中的布尔字段返回一个
t
或f
字符串,我隐约记得上次使用它时它返回的是true
或false
布尔值
检查getColumnMeta()后,可以将结果规范化为本机类型:
不过,这样做需要附加一些条件。php手册中的警告只有一个。从一个引擎返回到下一个引擎的不一致值是另一个:
如果要确保始终获得字符串,可以使用bindColumn()并指定每列的数据类型
$sql = 'SELECT id, name FROM test';
$stmt = $dbh->query($sql);
/* Bind by column number */
$stmt->bindColumn(1, $id, PDO::PARAM_STR); //or PDO::PARAM_INT
$stmt->bindColumn(2, $name, PDO::PARAM_STR);
while ($row = $stmt->fetch(PDO::FETCH_BOUND)) {
var_dump($id); var_dump($name);
}
这可能有用: