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');

?>

图片转代码服务由CSDN问答提供 功能建议

我想检查我的ms sql server中是否存在数据库'example'
代码看起来不像 工作:/
我得到,
sqlsrv_num_rows期望参数1在资源中

config.php \ ñ
 <代码>&LT; PHP中
 $的用户ID = $ _ SESSION [ '用户ID'];  
 $ serverName ='';  
 $ uid ='';  
 $ pwd ='';  
 $ connectionInfo = array(“UID”=&gt; $ uid,
“PWD”=&gt; $ pwd,
“数据库”=&gt; $ userID);  
 
 $ conn = sqlsrv_connect($ serverName,$ connectionInfo); 
 
 
?&gt; 
   
 
 

file.php \ n
 &lt;?php 
 
function checkForUserDB($ userID){
 
 $ _SESSION ['userID'] = $ userID; 
 include('config.php'); \  n $ sql =“SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME ='”。$ userID。“'”; 
 $ result = sqlsrv_query($ conn,$ sql,array(),array(“Scrollable”=&gt;'  static')); 
 $ count = sqlsrv_num_rows($ result); 
 if($ count == 1){
 
 echo“Database Exist!”; 
} 
 else {
 echo“数据库 不存在!“; 
 
} 
} 
 
 
 
checkForUserDB('example'); 
 
?&gt; 
   
 

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

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 
      
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题