我正在使用PHP 5.5并使用SQLSVR连接到MSSQL 2008R2。 根据文件:
$server = servername;
$database = somedatabase;
$username = someuser;
$password = somepassword;
$connInfo = array("Database"=>$database, "UID"=>$username, "PWD"=>$password);
$connTest = sqlsrv_connect( $server, $connInfo);
以上工作没有问题。
我遇到的问题是我需要指定实例名称。
$server = servername\instancename;
$database = somedatabase;
$username = someuser;
$password = somepassword;
$connInfo = array("Database"=>$database, "UID"=>$username, "PWD"=>$password);
$connTest = sqlsrv_connect( $server, $connInfo);
上面的代码有效,但似乎没有考虑实例名称。通过这种方式,我的意思是 ALL 以下似乎可以正常工作并连接到 servername \ instancename 。
$server = servername\instancename;
$server = servername\instancenam;
$server = servername\instancena;
$server = servername\instancen;
$server = servername\inst;
为什么会这样?当然,上述每一项都应该被视为不同的实例名称。我需要明确指示实例名称并测试与该服务器\ instance的连接。
即使我没有指定实例名称,我也可以连接到servername \ instancename。
提前谢谢!
修改 关于此的更多信息 我的表格有4个输入和一个测试连接按钮
<input type="text" id="EditSiteServer" name="EditSiteServer" value="Server\Instance" required>
<input type="text" id="EditSitePort" name="EditSitePort" value="1433" required>
<input type="text" id="EditSiteUsername" name="EditSiteUsername" value="Username" required>
<input type="text" id="EditSitePassword" name="EditSitePassword" value="Passwrod" required>
<button class="btn" type="button" name="connTest" id="btnconnTest" onclick="TestConnection()">Test Connection</button>
当用户点击“测试连接”按钮时,会触发此javascript / jquery函数
function TestConnection(){
$("body").css("cursor", "progress");
var processing = "<button class=\"btn btn-lg btn-default btn-block disabled\" type=\"button\">...checking...</button>"
$("#testConn").html(processing);
var s = document.forms["createSiteForm"]["InputSiteServer"].value + ", "+document.forms["createSiteForm"]["InputSitePort"].value;
var un = document.forms["createSiteForm"]["InputSiteUsername"].value;
var pw = document.forms["createSiteForm"]["InputSitePassword"].value;
var db = document.forms["createSiteForm"]["InputSiteDatabase"].value;
$.ajax({
type: "POST",
url: "../process/sites/check_connection.php",
dataType:"html",
data: { server : s, database : db, username : un, password : pw }
}).done(function(data){
$("#testConn").html(data);
$("body").css("cursor", "default");
});
}
然后发布到check_connection.php
<?php
$server = $_POST['server'];
$database = $_POST['database'];
$username = $_POST['username'];
$password = $_POST['password'];
//echo $server." ".$database." ".$username." ".$password."<br>";
$connInfo = array("Database"=>$database, "UID"=>$username, "PWD"=>$password);
$connTest = sqlsrv_connect($server, $connInfo);
if( $connTest ) {
echo "Connection succeeded";
} else {
echo "Connection failed";
}
?>
从进一步测试开始,EditSiteServer中'\'的任何内容都可以是上述任何内容,连接也会成功。我需要明确声明实例名称。
我做错了吗?