2016-06-16 143 views
1

我想为我的服务器创建一个登录系统。我使用xampp为本地网站使用了类似的代码,但现在我正在尝试使用外部服务器。我得到的错误是这个。登录系统的sqlserver连接错误

Array([0] => Array([0] => 42000 [SQLSTATE] => 42000 [1] => 102 [code] => 102 [2] => [ODBC] 11为SQL Server] [SQL服务器]附近有语法错误'. [message] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Incorrect syntax near ''))

,我的代码如下:

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

} 
?> 

连接工作正常,当我尝试发生的唯一问题检查结果是否为假。

当我不试图检查$结果时,我插入的所有内容都被视为错误的用户名和密码。

欢迎任何帮助或建议。

+0

现在误差改变,它看起来像这样: 阵列([0] =>数组([0] => 42000 [SQLSTATE] => 42000 [ 1] => 102 [code] => 102 [2] => [Microsoft] [用于SQL Server的ODBC驱动程序11] [SQL Server] [用户]附近的语法错误[message] => [Microsoft]对于SQL Server] [SQL Server]'users'附近的语法不正确。)) –

回答

2

我相信原因是您使用反引号来引用表和列名,而在SQL服务器名称中引用了"。尝试改变反引号到双引号,即:

$query = "SELECT \"Username\" FROM \"onlinereporting\" . \"users\" WHERE \"Username\" = '$inputuser'";