【发布时间】:2015-07-20 18:22:05
【问题描述】:
我有一个扩展名为 *.accdb 的 ms access 2010 数据库,我设法使用 PDO 和 ODBC 驱动程序连接到数据库。
我尝试删除 *.mdb 或 *.accdb 并得到一个错误,我不知道为什么它需要这两个扩展。
这是 POC:
<?php
$dbName = 'here be path';
$db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=$dbName; Uid=; Pwd=;");
$sql = "SELECT MAX(ID) as MaxID from tbl";
$result = $db->query($sql);
foreach($result as $r) {
var_dump($r);
}
奇怪的是得到的结果:
array (size=2)
'MaxID' => string '21411' (length=5)
0 => string '21411' (length=5)
为什么我会为一个预期结果获得 2 个条目? 我怎样才能得到这个:
array (size=1)
'MaxID' => string '21411' (length=5)
第二件事是如何优化 PDO 以在不使用 foreach 的情况下仅获得一个结果?
【问题讨论】:
-
这很正常。您没有告诉 PHP 要获取哪种结果数组/对象,因此它为您提供了默认值:双键字符串和整数。这不是“重复的结果”,只是 pdo 试图提供帮助
-
我该如何解决这个问题?你能给我一个提示吗?谢谢。
-
它返回一个按数字和名称索引的数组。决定你想要哪个,然后使用那个,比如
echo $arr[0];或echo $arr['name'];