从数据库中选择电子邮件地址

时间:2014-10-01 08:26:38

标签: php mysql

我有这个代码选择一个组合的电子邮件和密码但是当我使用登录表单回忆起电子邮件时代码失败并给我这个错误:

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个完整值而不是部分?

2 个答案:

答案 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'");
相关问题