繁体   English   中英

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

[英]Selecting e-mail address from database

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

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

$q2 = $db->prepare("SELECT * FROM userinfo WHERE logemail = :email");

使用准备好的语句时,您可以使用问号或命名占位符,即:email

此外,您可能还想添加另一个where来选择 logemail = :email 和 Wachtwoord = : Wachtwoord

我认为您正在使用 wordpress。 我不知道 wordpress 查询的确切语法。 但是在这里您的select查询中有syntax error

WHERE子句之后从$logemail删除$ -

$q2 = $db->prepare("SELECT * FROM userinfo WHERE logemail = '$logemail'");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM