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中为布尔型字段返回一个t
或f
字符串,我隐约记得它最后一次使用它时返回了一个true
或false
布尔值。
检查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?