无法使用PHP PDO在MS Access数据库中查询已保存的查询

时间:2012-10-02 17:00:31

标签: php sql ms-access pdo

我有一个包含大量已保存查询的Microsoft Access数据库。我想使用PHP来运行并获取这些查询的结果。我可以在同一个数据库中查询表格。我的理解是,我可以将查询视为表格。

这将从“New Grower Fields”表中返回数据就好了:

$db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=$connString; SystemDB=$mdw; Uid=$username; Pwd=$password");
$sth = $db->prepare("SELECT * FROM [New Grower Fields]");
$sth->execute();
$results = $sth->fetchALL(PDO::FETCH_ASSOC);
print_r($results);

但是,如果我想使用保存的查询,我相信应该像查询表一样,我什么也得不到。

$db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=$connString; SystemDB=$mdw; Uid=$username; Pwd=$password");
$sth = $db->prepare("SELECT * FROM [Daily Tonnage by Plant]");
$sth->execute();
$results = $sth->fetchALL(PDO::FETCH_ASSOC);
print_r($results);

有没有办法让我在PHP的MS Access中获取已保存查询的结果?我对此很新。我感谢任何和所有的帮助!我很乐意提供所需的任何其他信息。

1 个答案:

答案 0 :(得分:0)

这似乎为我解决了这个问题:

$db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=$connString; SystemDB=$mdw; Uid=$username; Pwd=$password");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sth = $db->prepare("SELECT [Grade Date], NetWt FROM [Daily Tonnage by Plant]");
$sth->execute();

while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
  print_r($row);
}

我补充说 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);并更改了

$results = $sth->fetchALL(PDO::FETCH_ASSOC);$row = $sth->fetch(PDO::FETCH_ASSOC)