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

Posted

技术标签:

【中文标题】使用 ODBC 连接到数据库会导致警告并且不打印任何内容【英文标题】:Connecting to database with ODBC results in warnings and nothing printed 【发布时间】:2013-06-12 17:46:02 【问题描述】:

我正在尝试将 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: 数据源名称:数字图书馆 TCP/IP 服务器:本地主机端口 80 用户:根 数据库:数字图书馆

当我运行我的代码时,我收到了这个警告,但没有打印出来:

警告:odbc_connect(): SQL 错误:[Microsoft][ODBC Driver Manager] 指定的 DSN 包含驱动程序和应用程序之间的体系结构不匹配,E:\Program Files\xampp\htdocs\DigitalLibrary 中 SQLConnect 中的 SQL 状态 IM014 \index.php 第 9 行

警告:odbc_exec() 期望参数 1 是资源,给定的布尔值 在第 11 行的 E:\Program Files\xampp\htdocs\DigitalLibrary\index.php 中

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

警告:odbc_close() 期望参数 1 是资源,布尔值 在 E:\Program Files\xampp\htdocs\DigitalLibrary\index.php 中给出 第 18 行

我做错了什么?

【问题讨论】:

【参考方案1】:

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

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

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

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

EDIT:你可以从here下载32位

希望这会有所帮助。

【讨论】:

更高版本的 Windows 在控制面板/管理工具中同时拥有 64 位和 32 位数据源管理员。 64 位和 32 位 odbc 驱动程序能否在同一台服务器上同时运行?我们有一个 Win Server 2008 R2。 如果我将另一个 ODBC 驱动程序(一个 32 位版本来满足我的 32 位应用程序)添加到具有现有 64 位版本的服务器(其他一些应用程序可能使用 64 位),会有问题吗?它不会与其他应用程序产生冲突吗?我担心如果我安装 32 位版本可能会影响服务器上现有和正在运行的应用程序

以上是关于使用 ODBC 连接到数据库会导致警告并且不打印任何内容的主要内容,如果未能解决你的问题,请参考以下文章