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

时间:2017-10-08 18:55:29

标签: php sql-server sqlsrv

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

的config.php

<?php
$userID=$_SESSION['userID']; 
$serverName = ''; 
$uid = '';   
$pwd = '';   
$connectionInfo = array( "UID"=>$uid,                            
                         "PWD"=>$pwd,                            
                         "Database"=>$userID); 

$conn = sqlsrv_connect( $serverName, $connectionInfo);


?>

file.php

<?php

function checkForUserDB($userID){

    $_SESSION['userID'] = $userID;
    include('config.php');
    $sql="SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME ='".$userID."'";
    $result=sqlsrv_query($conn,$sql, array(), array( "Scrollable" => 'static' ));
    $count=sqlsrv_num_rows($result);
    if($count==1){

        echo "Database Exist!";
    }
    else{
        echo "Database does not exist!";

    }
}



checkForUserDB('example');

?>

1 个答案:

答案 0 :(得分:0)

你有几个问题:

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

    sqlsrv_num_rows()
  • 然后,您正在使用INFORMATION_SCHEMA.SCHEMATA的错误字段,在SQL Server中数据库为$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 } ,但您正在检查CATALOG哪个是架构,正在SQL Server SCHEMA_NAME的默认架构。

  • 最后,您正在尝试检查数据库是否存在尝试首先连接到该数据库,因此如果数据库不存在,则连接失败,因为您不是检查dbo的结果这可能是导致sqlsrv_connect()失败的原因。您必须连接到始终存在的数据库,而不是要连接到要检查的数据库:

    sqlsrv_query()