2016-07-11 130 views
2

PDO MS SQL Server和PDO MySQL的PDO SQLSRV和PDO的MySQL返回字符串时,您将获取返回字符串数组,即使列的SQL类型的意思是数字类型,如int或浮动。我设法解决了这个问题,但我想知道为什么他们是以这种方式开始设计的。是否因为PDO本身不支持它(或以前不支持它)?获取当整数或浮点数

+0

类型列无所谓,它只是定义了可以存储在它,而不是当你从获取它有什么地方返回什么类型。默认情况下,PDO返回的所有内容都是一个字符串,PHP虽然是类型转换,所以'$ var = 10;'和'$ var =“10”;'(一个整数和一个字符串,都被赋值为10)都是视为数字。 – Qirel

回答

0

随着PDO MySQL the underlying C API返回a structure of strings时调用mysql_fetch_row()。由于PHP是一种松散类型的语言,必要时会自动转换为整数,所以我怀疑PDO开发人员选择按原样返回它们。这比查找每个列类型并动态地转换为整数/浮点数要快。

具体地关于浮动,从字符串转换时的本机PHP浮子可以是比原来的存储的值不同。例如,MySQL列支持精度,而PHP浮点不支持。将数据库中的浮点数作为字符串离开,可以更好地控制(例如选择以不同的精度使用a library)。

+0

还有一个准备好的声明 –

0

因为PDO本身不支持它(或以前不支持它)?

很多是的,但对于mydsql它不是因为PDO而是因为mysql C API。

既然changed,时刻PDO can return correct datatypes如果你运行一个本地事先准备好的声明针对mysqlnd基PDO实例。