PHP 检查 MS SQL 数据库是否存在?
PHP Check if MS SQL Database exist?
我想检查我的 MS sql 服务器
中是否存在数据库 'example'
该代码似乎不起作用:/
我得到了,
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');
?>
你有几个问题:
首先,您没有检查 sqlsrv_query()
的 return 值,如果查询失败,则 returns 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
}
然后,您使用了 INFORMATION_SCHEMA.SCHEMATA
的错误字段,在 SQL 服务器中,数据库是 CATALOG
但您正在检查 SCHEMA_NAME
嗯,架构,是 SQL 服务器 dbo
.
的默认架构
最后,您正在尝试检查数据库是否存在尝试首先连接到该数据库,因此如果数据库不存在连接失败,并且由于您没有检查 sqlsrv_connect()
的结果,这可能是后来 sqlsrv_query()
失败的原因。您必须连接到一个始终存在的数据库,而不是您要检查的数据库:
$connectionInfo = array( "UID"=>$uid,
"PWD"=>$pwd,
"Database"=>'YourMainDatabase'; // this database must exists
我想检查我的 MS sql 服务器
中是否存在数据库 'example'
该代码似乎不起作用:/
我得到了,
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');
?>
你有几个问题:
首先,您没有检查
sqlsrv_query()
的 return 值,如果查询失败,则 returnsFALSE
,并且在那如果您将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 }
然后,您使用了
INFORMATION_SCHEMA.SCHEMATA
的错误字段,在 SQL 服务器中,数据库是CATALOG
但您正在检查SCHEMA_NAME
嗯,架构,是 SQL 服务器dbo
. 的默认架构
最后,您正在尝试检查数据库是否存在尝试首先连接到该数据库,因此如果数据库不存在连接失败,并且由于您没有检查
sqlsrv_connect()
的结果,这可能是后来sqlsrv_query()
失败的原因。您必须连接到一个始终存在的数据库,而不是您要检查的数据库:$connectionInfo = array( "UID"=>$uid, "PWD"=>$pwd, "Database"=>'YourMainDatabase'; // this database must exists