致命错误:未捕获的 PDO 异常:SQLSTATE[42000] 语法错误或访问冲突

路易斯克里

我正在实施一个简单的代码来检查一封电子邮件是否已经在我的数据库中,以及它是否正在从数据库中删除它。但是,我收到此错误消息:

Fatal error: Uncaught 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' at line 1 in /home/saintpao/public_html/deleteNewsletter.php:24 Stack 
trace: #0 /home/saintpao/public_html/deleteNewsletter.php(24): 
PDOStatement->execute() #1 {main} thrown in /home/saintpao/public_html
/deleteNewsletter.php on line 24

这是conectar.php文件

$dbhost = "myHost";
$dbuser = "myUser";
$dbpass = "myPassword";
$dbname = "myDBName";
try {
    $db = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass,  
                  array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"));
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(Exception $error) {
    die("Error conexión BBDD " . $error->getMessage());
}   

这是deleteNewsletter.php文件:

function sanitazeEmail($email){
   if(empty($email)){
       return "";
   }
   $sanitized = filter_var($email, FILTER_SANITIZE_EMAIL);
   if(filter_var($sanitized, FILTER_VALIDATE_EMAIL)){
       return $sanitized;
   }
   return "";
}

$success = false;
$email = sanitazeEmail($_POST['email']);

if(!empty($email)){
    require_once 'conectar.php';

    $sql = "SELECT `email` FROM `emails` WHERE `email` = " . $email;
    $statement = $db->prepare($sql);

    if($statement->execute()){
        $sql_delete = "DELETE FROM `emails` WHERE `email` =" . $email;
        $statement = $db->prepare($sql_delete);
        $success = $statement->execute();
    }
}

与数据库的连接有效,因为我可以在其他文件中进行 SELECT 请愿,所以它一定是deleteNewsletter.php文件有问题知道出了什么问题吗?

系统调用

你的错误是电子邮件是一个字符串,应该被引用。但是,您使用的是 PDO,您可以使用准备好的语句来避免此类错误:

$sql_delete = "DELETE FROM `emails` WHERE `email` = :email";
$statement = $db->prepare($sql_delete);
$sucess = $statement->execute([':email' => $email]);

请注意,您的select查询并不是很有用,您可以直接进行delete查询。请注意,$statement->execute()返回的是语句,而不是结果。

正如@NigelRen 指出的那样,您可以$statement->rowCount()用来检查一行是否被删除。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

致命错误:未捕获的异常 'PDOException' 带有消息 'SQLSTATE[42000]:语法错误或访问冲突:1064

来自分类Dev

致命错误:未捕获的异常 'PDOException' 带有消息 'SQLSTATE[42000]:语法错误或访问冲突:1064

来自分类Dev

PHP / PDO SQLSTATE [42000]:语法错误或访问冲突:1064噩梦

来自分类Dev

错误:“SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误。”。.env 或 PDO 中的问题?

来自分类Dev

SQLSTATE [42000]:语法错误或访问冲突:

来自分类Dev

SQLSTATE [42000]:语法错误或访问冲突:

来自分类Dev

致命错误:未捕获的PDOException:SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误

来自分类Dev

PDO UPDATE:语法错误或访问冲突

来自分类Dev

语法错误或PDO上的访问冲突

来自分类Dev

DB:SQLSTATE [42000]:语法错误或访问冲突:1064错误

来自分类Dev

MYSQL错误-SQLSTATE [42000]:语法错误或访问冲突

来自分类Dev

为什么会出现“ SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有错误...”?(PDO-PHP)

来自分类Dev

为什么“ SQLSTATE [42000]:语法错误或访问冲突”?

来自分类Dev

SQLSTATE [42000]:语法错误或访问冲突:1064

来自分类Dev

SQLSTATE [42000]:语法错误或访问冲突:1064 PHP / MySQL

来自分类Dev

PDOException SQLSTATE [42000]:语法错误或访问冲突:1064

来自分类Dev

Laravel Migration SQLSTATE [42000]:语法错误或访问冲突:1064

来自分类Dev

SQLSTATE [42000]:语法错误或访问冲突:1064 laravel

来自分类Dev

Laravel 5 [PDOException] SQLSTATE [42000]:语法错误或访问冲突:

来自分类Dev

SQLSTATE [42000]:语法错误或访问冲突[PHP]

来自分类Dev

PDO类-语法错误或访问冲突1064

来自分类Dev

MySQL PDO语法错误或访问冲突:1064

来自分类Dev

如何修复错误“ CDbCommand ... SQLSTATE [42000]:语法错误或访问冲突:1064”

来自分类Dev

使用存储过程时出现Laravel 7错误:-SQLSTATE [42000]:语法错误或访问冲突:1064

来自分类Dev

CakePHP 3错误:SQLSTATE [42000]:语法错误或访问冲突:1064

来自分类Dev

PHP 致命错误:未捕获的异常 'PDOException' 带有消息 'SQLSTATE[42000]

来自分类Dev

Doctrine2 SQLSTATE [42000]:语法错误或访问冲突:1064

来自分类Dev

无法运行查询:SQLSTATE [42000]:语法错误或访问冲突:1064

来自分类Dev

SQLSTATE [42000]:语法错误或访问冲突:1066不是唯一的表/别名

Related 相关文章

  1. 1

    致命错误:未捕获的异常 'PDOException' 带有消息 'SQLSTATE[42000]:语法错误或访问冲突:1064

  2. 2

    致命错误:未捕获的异常 'PDOException' 带有消息 'SQLSTATE[42000]:语法错误或访问冲突:1064

  3. 3

    PHP / PDO SQLSTATE [42000]:语法错误或访问冲突:1064噩梦

  4. 4

    错误:“SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误。”。.env 或 PDO 中的问题?

  5. 5

    SQLSTATE [42000]:语法错误或访问冲突:

  6. 6

    SQLSTATE [42000]:语法错误或访问冲突:

  7. 7

    致命错误:未捕获的PDOException:SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误

  8. 8

    PDO UPDATE:语法错误或访问冲突

  9. 9

    语法错误或PDO上的访问冲突

  10. 10

    DB:SQLSTATE [42000]:语法错误或访问冲突:1064错误

  11. 11

    MYSQL错误-SQLSTATE [42000]:语法错误或访问冲突

  12. 12

    为什么会出现“ SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有错误...”?(PDO-PHP)

  13. 13

    为什么“ SQLSTATE [42000]:语法错误或访问冲突”?

  14. 14

    SQLSTATE [42000]:语法错误或访问冲突:1064

  15. 15

    SQLSTATE [42000]:语法错误或访问冲突:1064 PHP / MySQL

  16. 16

    PDOException SQLSTATE [42000]:语法错误或访问冲突:1064

  17. 17

    Laravel Migration SQLSTATE [42000]:语法错误或访问冲突:1064

  18. 18

    SQLSTATE [42000]:语法错误或访问冲突:1064 laravel

  19. 19

    Laravel 5 [PDOException] SQLSTATE [42000]:语法错误或访问冲突:

  20. 20

    SQLSTATE [42000]:语法错误或访问冲突[PHP]

  21. 21

    PDO类-语法错误或访问冲突1064

  22. 22

    MySQL PDO语法错误或访问冲突:1064

  23. 23

    如何修复错误“ CDbCommand ... SQLSTATE [42000]:语法错误或访问冲突:1064”

  24. 24

    使用存储过程时出现Laravel 7错误:-SQLSTATE [42000]:语法错误或访问冲突:1064

  25. 25

    CakePHP 3错误:SQLSTATE [42000]:语法错误或访问冲突:1064

  26. 26

    PHP 致命错误:未捕获的异常 'PDOException' 带有消息 'SQLSTATE[42000]

  27. 27

    Doctrine2 SQLSTATE [42000]:语法错误或访问冲突:1064

  28. 28

    无法运行查询:SQLSTATE [42000]:语法错误或访问冲突:1064

  29. 29

    SQLSTATE [42000]:语法错误或访问冲突:1066不是唯一的表/别名

热门标签

归档