无效的sql语句

我正在尝试使用预编码的项目进行实验,该项目位于此链接here之内。无效的sql语句

我使用xampp作为web服务器和mysql。每当我运行具有此代码的验证页时:

<?php 

include_once("zSessionStart.php");

include_once("zConfig.php");

include_once("zDB.php");

$password = $_REQUEST["password"];

$userID = $_REQUEST["userID"];

$isAdmin = false; //is administrator or not

$askDemo = false;

//authenticate the login data from login.php

$query="select userID, isAdmin, askDemo from $_usersTable where (password= '$password') and (userID='$userID');";

$rs=mysql_query($query) or die ("Invalid sql.");

if (mysql_num_rows($rs) > 0) //correct password

{

$array = mysql_fetch_array($rs);

if(strcmp($array["isAdmin"], "y")==0){

$isAdmin=true;

}

if(strcmp($array["askDemo"], "y")==0){

$askDemo=true;

}

if(!$isAdmin){

$query="select userID from usertests where userID='" . $userID . "'";

$rs2=mysql_query($query) or die ("Invalid sql.");

if(mysql_num_rows($rs2) > 0){ //already take test

$array2 = mysql_fetch_array($rs2);

echo "<h2> You have already taken the task. Please contact your administrator if you " .

" feel you need to re-take this task again.</h2>";

die();

}

}

$_SESSION['userID'] = $array["userID"];

session_unregister('loginErr');

if($isAdmin){

header("Location: transfer.php?" . SID);

}else{

if($askDemo){

header("Location:demo.php?" . SID);

}else{

header("Location: index.php?" . SID);

}

}

}

else

{

$_SESSION['loginErr'] = "true";

header("Location: login.php");

}

mysql_close($db);

?>

我收到一个错误,指出“Invalid sql。”。在我的数据库中,我有一个名为users的表,它具有诸如userID和密码之类的凭证。我已经设置了用户名为admin和密码才能通过。但是,我还没有找到解决问题的方法。

回答:

您的查询无效,因为您使用的错误表名称甚至没有可变语法,即$_usersTable。而且,您正在用多个分号结束查询,甚至单/双引号没有正确使用。

你需要更新你的选择查询象下面这样来解决此问题:

$query="select userID, isAdmin, askDemo from usersTable where password = '".$password."' and userID ='".$userID."'; 

我强烈建议你使用的mysqli 预处理语句查询,使之更加安全象下面这样:

$mysqli = mysqli_connect($host, $username, $password, $db); 

$query = "SELECT userID, isAdmin, askDemo from `usersTable` WHERE userID=?";

$stmt = $mysqli->prepare($query);

$stmt->bind_param("i", $userID);

$stmt->execute();

$res = $stmt->get_result();

$data = $res->fetch_all();

要了解更多信息,请点击链接http://php.net/manual/en/mysqli.prepare.php

以上是 无效的sql语句 的全部内容, 来源链接: utcz.com/qa/259144.html

回到顶部