如何检查我的 ODBC 数据源是不是存在于 PHP 中?

Posted

技术标签:

【中文标题】如何检查我的 ODBC 数据源是不是存在于 PHP 中?【英文标题】: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 资源

请帮忙!谢谢。

【问题讨论】:

【参考方案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。当然,如果连接良好,那么它会创建连接对象。

【讨论】:

以上是关于如何检查我的 ODBC 数据源是不是存在于 PHP 中?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 中检查文件是不是存在于目录中?

如何检查php中是不是已经存在mysql数据库? [复制]

在创建之前如何检查我的数据是不是已经存在于我的数据库中?

如何检查用户是不是存在于数据库表中?

检查数组中的所有值是不是都存在于数据库列中

如何检查用户名是不是存在于数据库中