duanrang2627 2017-10-08 18:55
浏览 25
已采纳

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

I want to check if the database 'example' exist in my ms sql server
The code doesnt seem to work :/
Im getting,
sqlsrv_num_rows expects parameter 1 to be in resource

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条回答 默认 最新

  • dongshubang7816 2017-10-08 21:43
    关注

    You have several problems:

    • First, you are not checking the return value of sqlsrv_query(), which returns FALSE if the query fails, and in that case you're passing FALSE to sqlsrv_num_rows(), which seems to be your first problem. You have to do something like this:

      $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
      }
      
    • Then, you are using the wrong field of INFORMATION_SCHEMA.SCHEMATA, in SQL Server the database is CATALOG but you are checking SCHEMA_NAME which is, well, the schema, being the default schema of SQL Server dbo.

    • Finally, you are trying to check if a database exists trying to connect in first place to that database, so if the database doesn't exists the connection fails, and since you aren't checking the result of sqlsrv_connect() this is probably the cause of the failed sqlsrv_query() later. You have to connect to a database that always exists, not to the database that you want to check:

      $connectionInfo = array( "UID"=>$uid,                            
                               "PWD"=>$pwd,                            
                               "Database"=>'YourMainDatabase'; // this database must exists 
      
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源