【发布时间】:2013-08-02 15:17:36
【问题描述】:
我有一个 Microsoft Access 数据库,我正在尝试使用 PHP 查询表,并输出有效的 JSON。我有一个 MSSQL 数据库的等效代码,我是否正在尝试让我的代码做同样的事情,但只针对 Access 数据库。
这是 MSSQL 代码
$myServer = "server";
$myDB = "db";
$conn = sqlsrv_connect ($myServer, array('Database'=>$myDB));
$sql = "SELECT *
FROM db.dbo.table";
$data = sqlsrv_query ($conn, $sql);
$result = array();
do {
while ($row = sqlsrv_fetch_array ($data, SQLSRV_FETCH_ASSOC)) {
$result[] = $row;
}
} while (sqlsrv_next_result($data));
$json = json_encode ($result);
sqlsrv_free_stmt ($data);
sqlsrv_close ($conn);
这是我为 MDB 文件尝试的内容
$dbName = "/filename.mdb";
if (!file_exists($dbName)) {
die("Could not find database file.");
}
$db = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$dbName", $user, $password);
$sql = "SELECT *
FROM cemetery";
$data = $db->query($sql); // I'm getting an error here
$result = array();
// Not sure what do do for this part...
do {
while ($row = fetch($data, SQLSRV_FETCH_ASSOC)) {
$result[] = $row;
}
} while (sqlsrv_next_result($data));
$json = json_encode ($result);
我有点按照这个尝试连接到数据库:http://phpmaster.com/using-an-access-database-with-php/
目前这给了我一个 500 内部服务器错误。我期待这样的字符串保存在变量$json
[
{
"col1":"col value",
"col2":"col value",
"col3":"col value",
},
{
"col1":"col value",
"col2":"col value",
"col3":"col value",
},
{
etc...
}
]
有人可以帮我移植上面的 MSSQL 代码,以便我可以将它与 MDB 数据库一起使用吗?感谢您的帮助!
编辑:我正在逐行注释掉这些行,它在$data = $db->query($sql); 行向我抛出了 500 错误。我查看了错误日志,我收到了错误Call to a member function query() on a non-object。我的 php.ini 文件中已经有 extension=php_pdo_odbc.dll 行未注释。有谁知道问题出在哪里?
【问题讨论】:
-
learn 确实使用 echo 进行调试,并找到您的错误所在。我已经找到了一个:
while ($row = fetch($data, SQLSRV_FETCH_ASSOC))应该是while ($row = $data->fetch(PDO::FETCH_ASSOC))。do { .. } while需要被删除。只要看看你发布的例子,它就在那里 -
请更新您的问题,告诉我们您预计会发生什么、现在正在发生什么以及您尝试解决的问题。考虑包括您收到的任何错误消息,以及您用于帮助解决问题的资源的描述以及它们如何未能回答您的问题。
-
当我运行它时,它给了我一个 500 内部服务器错误,所以我看不到任何回显的字符串(即使在进行了您建议的更改后,我也会收到此错误)。我的 MDB 文件与我的站点位于同一目录中,现在也仅用于测试。我已经更新了这个问题,乔治!
-
查看错误日志,他们通常会有更多关于导致错误/解析错误等的信息。
-
我已经用错误日志所说的错误更新了问题