Php 登录系统的Sqlserver连接错误
我正在尝试为我的服务器创建登录系统。我使用xampp为我的本地网站使用了类似的代码,但现在我正在尝试使用外部服务器。我得到的错误是这个 数组([0]=>Array([0]=>42000[SQLSTATE]=>42000[1]=>102[code]=>102[2]=>[Microsoft][ODBC驱动程序11 for SQL Server][SQL Server]靠近“Php 登录系统的Sqlserver连接错误,php,mysql,sql-server,Php,Mysql,Sql Server,我正在尝试为我的服务器创建登录系统。我使用xampp为我的本地网站使用了类似的代码,但现在我正在尝试使用外部服务器。我得到的错误是这个 数组([0]=>Array([0]=>42000[SQLSTATE]=>42000[1]=>102[code]=>102[2]=>[Microsoft][ODBC驱动程序11 for SQL Server][SQL Server]靠近“”的语法不正确。[消息]=>[Microsoft][ODBC驱动程序11 for SQL Server][SQL Server]
”的语法不正确。[消息]=>[Microsoft][ODBC驱动程序11 for SQL Server][SQL Server]靠近“
”的语法不正确])
我的代码如下:
<?php
session_start();
$inputuser = $_REQUEST['Username'];
$inputpass = $_REQUEST['Password'];
$Server = "MyServer";
$user = "user";
$password = "pass";
$database = "mydb";
$table = "users";
$connectionInfo = array( "Database"=>$database,"UID"=>$user, "PWD"=>$password);
$link = sqlsrv_connect($Server, $connectionInfo);
if ($link === false) {
echo "Connection failed. \n";
die(print_r(sqlsrv_errors(), true));
}
$query = "SELECT `Username` FROM `onlinereporting` . `users` WHERE `Username` = '$inputuser'";
$querypass = "SELECT `Password` FROM `onlinereporting` . `users` WHERE `Password` ='$inputpass'";
$result = sqlsrv_query($link,$query);
$resultpass = sqlsrv_query($link,$querypass);
if ($result === false) {
die(print_r(sqlsrv_errors(), true));
}
$row = sqlsrv_fetch_array($result);
$rowpass = sqlsrv_fetch_array($resultpass);
$serveruser = $row["Username"];
$serverpass = $rowpass["Password"];
if ($serveruser And $serverpass) {
header('Location: index.html');
}
else {
header('Location: FailedPage.html');
}
?>
我认为原因是您使用反勾号引用表名和列名,而在SQL server中,名称是使用“
引用的。请尝试将反勾号更改为双引号,即:
$query = "SELECT \"Username\" FROM \"onlinereporting\" . \"users\" WHERE \"Username\" = '$inputuser'";
现在,错误发生了变化,看起来是这样的:数组([0]=>Array([0]=>42000[SQLSTATE]=>42000[1]=>102[code]=>102[2]=>[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]靠近“users”的语法不正确。[消息]=>[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]靠近“users”的语法不正确。)