PHP登录页面查询中的语法错误

PHP登录页面查询中的语法错误,php,mysql,Php,Mysql,我试图创建一个PHP登录页面,检查用户输入的详细信息是否在数据库中,但它返回以下错误: 致命错误:未捕获PDOException:SQLSTATE[42000]:语法错误或访问 违反:1064您的SQL语法有错误;检查手册 对应于您的MariaDB服务器版本,以便使用正确的语法 中第1行的“SLEECT*来自username=NULL和password=NULL的用户” C:\xampp\htdocs\sign\login.php:18堆栈跟踪:0 C:\xampp\htdocs\sign\lo

我试图创建一个PHP登录页面,检查用户输入的详细信息是否在数据库中,但它返回以下错误:


致命错误:未捕获PDOException:SQLSTATE[42000]:语法错误或访问 违反:1064您的SQL语法有错误;检查手册 对应于您的MariaDB服务器版本,以便使用正确的语法 中第1行的“SLEECT*来自username=NULL和password=NULL的用户” C:\xampp\htdocs\sign\login.php:18堆栈跟踪:0 C:\xampp\htdocs\sign\login.php18:PDOStatement->execute1 C:\xampp\htdocs\sign\login.php31:SignIn 2{main}被抛出 第18行的C:\xampp\htdocs\sign\login.php

我做错了什么?我该如何修复它

编写的HTML代码是

<html>
<body>
<form method="POST" action="login.php">
<b>Enter your username: </b><br>
<input type="text" name="username"><br>
<b>Enter your password: </b><br>
<input type="password" name ="password"><br>
<input type="submit" name="submit">
</form>
</body>
</html>

您会收到这样的错误消息,因为您在SignIn函数中调用了未定义的变量$username和$password。这就是为什么查询会将它们视为null


致命错误:未捕获PDOException:SQLSTATE[42000]:语法错误或访问 违反:1064您的SQL语法有错误;检查手册 对应于您的MariaDB服务器版本,以便使用正确的语法 中第1行的“SLEECT*来自username=NULL和password=NULL的用户”

您可以在函数defention上传递它

function SignIn($username, $password)
然后请先检查$_POST[submit],然后验证用户名和密码,并调用SignIn$username$password

第一:选择正确的拼写

第二步:按照dolly aswin建议的步骤进行操作

if(isset($_POST['submit']))
{
    ......
}
第三:rowcount应该是rowcount。c应该是大写字母

第四:您需要从语句中获取行数。非从布尔值$result仅包含布尔值true或false

改为

$count = $search->rowCount();

可能重复的打字错误:SLEECT拼写为SELECT:我已尝试上述更改,但之前我已将用户名输入为“john”,密码输入为“america”,这些密码也在我的数据库中,但当我按login时,我收到了一个衰减错误致命错误:未捕获PDOException:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,了解用户名为“john”且密码为“america”的用户在C:\xampp\htdocs\sign\login.php:27堆栈跟踪:0 C:\xampp\htdocs\sign\login.php27:PDOStatement->执行1 C:\xampp\htdocs\sign\login.php19:sign'john',america'2{main}在第27行和第27行的C:\xampp\htdocs\sign\login.php中抛出了以下语句-$result=$search->execute;您的sql是来自username=NULL和password=NULL的用户的typo.SLEECT*。这应该是SELECT not SLEECT编辑您的评论。最后选择not SELECT@DollyAswinyes我已经完成了,谢谢,但它给出了另一个错误I甚至已经将变量$username和$password传递到函数sign中,但是我收到了一个延迟错误-致命错误:未捕获错误:在C中调用布尔值上的成员函数rowcount您能帮我解决整个错误吗?致命错误:未捕获错误:在C:\xampp\htdocs\sign\log中调用布尔值上的成员函数rowcountin.php:28堆栈跟踪:0c:\xampp\htdocs\sign\login.php19:SignIn'john','america'1{main}在C:\xampp\htdocs\sign\login.php行中抛出28@Ram使用rowCount而不是rowcountyeahs c应该是capsthankyou的答案,但是即使rowCount中的“c”是cpital,它也会以衰减方式返回相同的错误-致命错误:未捕获错误:调用c:\xampp\htdocs\sign\login.php:28 Stack-trac中的布尔值上的成员函数rowCounte:0 C:\xampp\htdocs\sign\login.php19:SignIn'john','america'1{main}在第28行的C:\xampp\htdocs\sign\login.php中抛出
if(isset($_POST['submit']))
{
    $username = $_POST['username'];
    $password = $_POST['password'];
    $errflag  = false;
    if($username == '') {
       $errmsg_arr[] = 'You must enter your Username';
       $errflag = true;
    }

    if($password == '') {
       $errmsg_arr[] = 'You must enter your Password';
       $errflag = true;
    }

    if ($errflag == false) {
       SignIn($username, $password);
    }
}
if(isset($_POST['submit']))
{
    ......
}
 $count = $result->rowCount();
$count = $search->rowCount();