PDO + MySQL总是返回字符串,但MsSQL呢?

使用MySQL时,PDO始终将字段值作为字符串返回。 使用MSSQL等其他数据库时PDO是否一致?

如果没有,是否有一个标志迫使PDO总是返回字符串(为了保持一致性)? 还是更好地为所有值返回本机类型?

据我所知,Drupal使用PDO可以使用不同的数据库。 它执行必要的转换以使SQL语句与各种语法兼容。 但是它如何处理查询结果中的数据类型呢?


如果你想确保你总是得到字符串,你可以使用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);
}

据我所知,这取决于数据库引擎。

前段时间,PDO会在Postgres中为布尔型字段返回一个tf字符串,我隐约记得它最后一次使用它时返回了一个truefalse布尔值。

检查getColumnMeta()后,可以将结果标准化为本机类型:

http://us3.php.net/manual/en/pdostatement.getcolumnmeta.php

尽管如此,还是附带了一些字符串。 在PHP手册中的警告是一个。 从引擎返回到下一个的不一致的值是另一个:

PDO的PHP native_type列表getColumnMeta()

链接地址: http://www.djcxy.com/p/71963.html

上一篇: PDO + MySQL always returns strings, but what about MsSQL?

下一篇: what are the pros and cons?