我有这个代码选择一个组合的电子邮件和密码但是当我使用登录表单回忆起电子邮件时代码失败并给我这个错误:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]:
Syntax error or access violation: 1064 You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near '@gmail.com = 'admin'' at line 1' in C:\wamp\www\PWS\index.php on line 15
( ! ) PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near '@gmail.com = 'admin'' at line 1 in C:\wamp\www\PWS\index.php on line 15'
我知道为什么这不起作用,虽然它将电子邮件识别为Thodor20@gmail.com,其中@ gmail.com因为@而分离。 那么我该如何更改现有代码:
<?php
include("connect.php");
$logemail = @$_POST['email'];
$logww = @$_POST['wachtwoord'];
if(isset($_POST['submit'])){
$q2 = $db->prepare("SELECT * FROM userinfo WHERE $logemail = '$logww'");
$q2->execute(array(':email'=>$logemail,':wachtwoord'=>$logww));
echo "Login succesvol!";
}
?>
形式:
<form method="post">
E-mail:<input type="text" name="email"><br>
Wachtwoord:<input type="password" name="wachtwoord"><br>
<input type="submit" name="submit" value="Inloggen"><br>
</form>
所以它会接受Thodor20@gmail.com作为1个完整值而不是部分?
答案 0 :(得分:1)
$q2 = $db->prepare("SELECT * FROM userinfo WHERE logemail = :email");
使用预先准备好的陈述时,您可以使用问号或命名占位符,即:email
另外,您可能需要添加另一个where
来选择logemail =:email和Wachtwoord =:Wachtwoord
答案 1 :(得分:0)
我认为你正在使用wordpress。我不知道wordpress查询的确切语法。
但是,您在syntax error
查询中select
了。
在$
子句 -
$logemail
删除WHERE
$q2 = $db->prepare("SELECT * FROM userinfo WHERE logemail = '$logemail'");