使用ODBC连接数据库将导致警告,并且不打印任何内容


Connecting to database with ODBC results in warnings and nothing printed

我试图使用ODBC与php,我似乎有一些问题。这是我的代码:

<?php
    $connect = odbc_connect("digitallibrary", "root", "");
    $sql = "SELECT name FROM books";
    $result = odbc_exec($connect, $sql);
    echo $result;
    while (odbc_fetch_row($result)) {
        $name = odbc_result($result, "name");
        print("$name'n");
    }
    odbc_close($connect);
    ?>

我还安装了mysql odbc连接器,并添加了这个系统DSN:数据源名称:digitallibraryTCP/IP Server: localhost 80端口用户:根数据库:digitallibrary

当我运行我的代码,我得到这个警告,但没有打印:

警告:odbc_connect(): SQL error: [Microsoft][ODBC Driver Manager]指定的DSN包含驱动程序和应用程序之间的架构不匹配,SQL状态IM014在SQLConnect in E:'Program Files'xampp'htdocs'DigitalLibrary'index.php on line 9

警告:odbc_exec()期望参数1为resource, boolean给定在E:'Program Files'xampp'htdocs'DigitalLibrary'index.php on line 11

警告:odbc_fetch_row()期望参数1为resource, null给出在E:'Program Files'xampp'htdocs'DigitalLibrary'index.php on第14行

警告:odbc_close()期望参数1为resource, boolean给出在E:'Program Files'xampp'htdocs'DigitalLibrary'index.php on第18行

我做错了什么?

现在,您正在尝试使用64位应用程序和32位ODBC驱动程序,反之亦然。您应该检查您使用的PHP应用程序是64位还是32位。之后,您必须启动正确的ODBC管理员。有32 bit64 bit两种类型。

如果您使用的是64位ODBC管理员:它位于管理工具,控制面板

如果您使用的是32位ODBC管理员:您应该进入路径%windir'syswow64'odbcad32.exe.

设置了正确的ODBC管理员。您还需要创建系统DSN。如果在管理员中找不到MS Access驱动程序,则需要为该体系结构下载一个。

EDIT:您可以从这里下载32位