PHP检查MS SQL数据库是否存在?

PHP检查MS SQL数据库是否存在?,php,sql-server,sqlsrv,Php,Sql Server,Sqlsrv,我想检查我的ms sql server中是否存在数据库“示例” 代码似乎不起作用:/ 我得到了, sqlsrv_num_rows期望参数1位于资源中 config.php file.php 您有几个问题: 首先,您没有检查sqlsrv_query()的返回值,如果查询失败,它将返回FALSE,在这种情况下,您将FALSE传递到sqlsrv_num_rows(),这似乎是您的第一个问题。你必须这样做: $result=sqlsrv_query($conn, $sql, array(), ar

我想检查我的ms sql server中是否存在数据库“示例”
代码似乎不起作用:/
我得到了,
sqlsrv_num_rows期望参数1位于资源中

config.php

file.php
您有几个问题:

  • 首先,您没有检查
    sqlsrv_query()
    的返回值,如果查询失败,它将返回
    FALSE
    ,在这种情况下,您将
    FALSE
    传递到
    sqlsrv_num_rows()
    ,这似乎是您的第一个问题。你必须这样做:

    $result=sqlsrv_query($conn, $sql, array(), array( "Scrollable" => 'static' ));
    if ($result===false) {
      // only print SQL error while debugging, in production log the error to a file
      exit("Error executing query: ".sqlsrv_errors());
    }
    else {
      $count=sqlsrv_num_rows($result);
      // rest of your code
    }
    
  • 然后,您使用了错误的字段,在SQL Server中,数据库是
    CATALOG
    ,但您正在检查
    SCHEMA\u NAME
    ,它是SQL Server的默认架构
    dbo

  • 最后,您将尝试检查数据库是否存在,以便首先尝试连接到该数据库,因此,如果该数据库不存在,则连接将失败,并且由于您没有检查
    sqlsrv\u connect()
    的结果,这可能是以后失败的
    sqlsrv\u query()
    的原因。您必须连接到始终存在的数据库,而不是要检查的数据库:

    $connectionInfo = array( "UID"=>$uid,                            
                             "PWD"=>$pwd,                            
                             "Database"=>'YourMainDatabase'; // this database must exists 
    

    • 您有几个问题:

      • 首先,您没有检查
        sqlsrv_query()
        的返回值,如果查询失败,它将返回
        FALSE
        ,在这种情况下,您将
        FALSE
        传递到
        sqlsrv_num_rows()
        ,这似乎是您的第一个问题。你必须这样做:

        $result=sqlsrv_query($conn, $sql, array(), array( "Scrollable" => 'static' ));
        if ($result===false) {
          // only print SQL error while debugging, in production log the error to a file
          exit("Error executing query: ".sqlsrv_errors());
        }
        else {
          $count=sqlsrv_num_rows($result);
          // rest of your code
        }
        
      • 然后,您使用了错误的字段,在SQL Server中,数据库是
        CATALOG
        ,但您正在检查
        SCHEMA\u NAME
        ,它是SQL Server的默认架构
        dbo

      • 最后,您将尝试检查数据库是否存在,以便首先尝试连接到该数据库,因此,如果该数据库不存在,则连接将失败,并且由于您没有检查
        sqlsrv\u connect()
        的结果,这可能是以后失败的
        sqlsrv\u query()
        的原因。您必须连接到始终存在的数据库,而不是要检查的数据库:

        $connectionInfo = array( "UID"=>$uid,                            
                                 "PWD"=>$pwd,                            
                                 "Database"=>'YourMainDatabase'; // this database must exists 
        

      的可能副本的可能副本基本上,如果与数据库的连接尝试失败,则数据库不存在。如果它连接,它就存在。您知道如果数据库不存在,sql将返回哪些错误代码吗。因为如果我的连接有问题(服务器错误),它将返回与您可以根据失败的连接进行检测相同的错误,而且,我认为最好使用
      信息_SCHEMA
      方法,无论如何,如果您要创建DB if不存在,您需要一个工作连接。因此,基本上,如果与数据库的连接尝试失败,则数据库不存在。如果它连接,它就存在。您知道如果数据库不存在,sql将返回哪些错误代码吗。因为如果我的连接有问题(服务器错误),它将返回与您可以根据失败的连接进行检测相同的错误,但是我认为最好使用
      信息\u模式
      方法,无论如何,如果您要创建数据库,如果不存在,您需要一个工作连接。