0
我目前正在使用PHP和MS Access。我有一个简单的表格,具有不同的数据类型。与数据库的连接工作良好,但是,如果我对查询执行var_dump,则会注意到所有数据类型都转换为字符串。 如果我用ASP使用相同的数据库,我得到的数据类型正确。这个问题似乎只与PHP和ODBC驱动程序有关。
有没有办法让这些值与他们正确的数据类型?
任何帮助将不胜感激。ODBC连接仅返回字符串作为数据类型
我目前正在使用PHP和MS Access。我有一个简单的表格,具有不同的数据类型。与数据库的连接工作良好,但是,如果我对查询执行var_dump,则会注意到所有数据类型都转换为字符串。 如果我用ASP使用相同的数据库,我得到的数据类型正确。这个问题似乎只与PHP和ODBC驱动程序有关。
有没有办法让这些值与他们正确的数据类型?
任何帮助将不胜感激。ODBC连接仅返回字符串作为数据类型
确实PHP中的Access ODBC连接返回所有字段为字符串,例如,
array(5) {
["ID"]=>
string(1) "1"
["TextField"]=>
string(13) "This is text."
["IntegerField"]=>
string(1) "3"
["DateTimeField"]=>
string(19) "2014-03-01 00:00:00"
["CurrencyField"]=>
string(8) "100.0000"
}
这真的没关系,因为当你在计算中使用它们时,PHP只会将字符串转换为数字。 (或者,您可以显式强制它们作为解释here)
需要特殊处理的唯一的字段是日期/时间字段,那么所有你需要做的就是将它们传递到strtotime()
,他们将被转换为Unix时间戳值:
$data = odbc_fetch_array($result);
$datetime = strtotime($data["DateTimeField"]);
echo '$datetime value is: ' . $datetime;
echo "\r\n\r\n";
echo '$datetime formatted with date("c", ...) is: ' . date("c", $datetime);
结果
$datetime value is: 1393650000
$datetime formatted with date("c", ...) is: 2014-03-01T00:00:00-05:00
无代码,没有查询,不知道你的意思。 – developerwjk