我想查看数据库'示例'存在于我的ms sql server中
代码似乎不起作用:/
我得到了,
sqlsrv_num_rows期望参数1在资源中
<?php
$userID=$_SESSION['userID'];
$serverName = '';
$uid = '';
$pwd = '';
$connectionInfo = array( "UID"=>$uid,
"PWD"=>$pwd,
"Database"=>$userID);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
?>
<?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');
?>
答案 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()