2014-03-03 129 views
0

我目前正在使用PHP和MS Access。我有一个简单的表格,具有不同的数据类型。与数据库的连接工作良好,但是,如果我对查询执行var_dump,则会注意到所有数据类型都转换为字符串。 如果我用ASP使用相同的数据库,我得到的数据类型正确。这个问题似乎只与PHP和ODBC驱动程序有关。
有没有办法让这些值与他们正确的数据类型?
任何帮助将不胜感激。ODBC连接仅返回字符串作为数据类型

+0

无代码,没有查询,不知道你的意思。 – developerwjk

回答

1

确实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