【问题标题】:How to check if my ODBC Data Source exist in PHP?如何检查我的 ODBC 数据源是否存在于 PHP 中?
【发布时间】:2012-02-29 00:54:46
【问题描述】:

我有一个简单的项目,那就是创建一个检查 mysql 和 odbc 连接的函数。我已经为mysql创建了函数,这是我的示例代码:

function check() {
    $serverName = 'localhost';
    $userName = 'root';
    $password = '123';
    $db = 'sample';

    $conn = mysql_connect($serverName, $userName, $password);
    mysql_select_db($db, $conn);

    $trans = 'SELECT * FROM Labels';
    $trans_result = mysql_query($trans, $conn);

    if(!$trans_result) {
        die(mysql_error());
    } else {
        echo "connected";
    }
}

在检查 mysql 连接时,这个对我有用。现在,我的问题是,是否可以创建这样的东西来检查我的 odbc 数据源连接?所以就像

$conn = odbc_connect("spmuse1","" ,""); # Open connection.

$trans = "SELECT French FROM Labels";
$trans_result = odbc_exec($conn, $trans);

if(!$trans_result) {
    echo "error?";
} else {
    echo "connected";
}

你知道我的意思吗?当我使用这段代码时,我总是有2个这个错误

警告:odbc_connect() [function.odbc-connect]:SQL 错误:[Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序,SQLConnect 中的 SQL 状态 IM002

警告:odbc_exec():提供的参数不是有效的 ODBC-Link 资源

请帮忙!谢谢。

【问题讨论】:

    标签: php mysql odbc


    【解决方案1】:

    首先您需要确定 odbc 驱动程序的供应商,希望下面的示例对您有用

      <?php
    
         // Configure connection parameters
        $db_host        = "server.mynetwork";
        $db_server_name = "Dev_Server";
        $db_name        = "Dev_Data";
        $db_file        = 'c:\dbstorage\dev.db';
        $db_conn_name   = "php_script";
        $db_user        = "dbuser";
        $db_pass        = "dbpass";
    
        $connect_string = "Driver={Adaptive Server Anywhere 8.0};".
                    "CommLinks=tcpip(Host=$db_host);".
                    "ServerName=$db_server_name;".
                    "DatabaseName=$db_name;".
                    "DatabaseFile=$db_file;".
                    "ConnectionName=$db_conn_name;".
                    "uid=$db_user;pwd=$db_pass";
    
        // Connect to DB
        $conn = odbc_connect($connect_string,'','');
    
        // Query
        $qry = "SELECT * FROM my_table";
    
        // Get Result
       $trans_result= odbc_exec($conn,$qry);
    
      if(!$trans_result) {
        echo "error?";
      } else {
        echo "connected";
      }
    ?>
    

    【讨论】:

    • 谢谢!连接字符串对我有用,但随后我收到相同的错误消息,但这次它回显“错误?”。与我的原始代码不同,它直接进入 else 部分并回显“已连接”并显示相同的 2 错误。
    【解决方案2】:

    我花了几天时间寻找一个简单的答案,并想出了这个对我有用的方法:

    if (@odbc_connect("DBName","un","pw",SQL_CUR_USE_ODBC) == FALSE){
        echo "Database does not exist";
    } else {
        $connection=odbc_connect("DBName","un","pw",SQL_CUR_USE_ODBC);
        echo "Database exists";
    }
    

    如果数据库不存在,@ 会抑制基本错误,因此连接尝试只会返回 false。当然,如果连接良好,那么它会创建连接对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-02
      • 1970-01-01
      • 2013-12-16
      • 2013-03-01
      • 1970-01-01
      • 2012-01-17
      • 2012-07-02
      • 1970-01-01
      相关资源
      最近更新 更多