PDO sql 语句上的语法错误


Syntax Error on PDO sql statment

我在sql语句($result(中的这段代码中遇到了问题。它说我在WHERE 'idCartao'='$id'上有一个语法错误。

<?php
$db_host        = 'localhost';
$db_user        = 'root';
$db_pass        = '';
$db_database    = 'hsa'; 
$id = $_POST['idTAG'];
        try {
            $db = new PDO('mysql:host='.$db_host.';dbname='.$db_database, $db_user, $db_pass);
        } 
        catch (PDOException $e) {
            print "Error!: " . $e->getMessage() . "<br/>";
            die();
}
            $result = $db->prepare("INSERT INTO 'cartao' (horaEntrada,horaSaida) VALUES (CURTIME(),CURTIME()) WHERE 'idCartao'='$id'");
            $result->execute();
$db = null;
?>

1(在SQL中,''中引用的任何内容都是字符串。不能将其用作列/表/数据库名称。MySQL专门提供使用``的列/表/数据库的引用,当使用诸如数据名称之类的关键字时,使用它来转义MySQL保留关键字通常是一种很好的做法。

2(INSERT ... VALUES不适用于您可能打算使用UPDATE WHERE?不确定,从问题中不清楚。

3(您还应该知道如何正确使用准备好的语句。

总的来说,您可能需要执行以下操作:

$result = $db->prepare("UPDATE `cartao` SET `horaEntrada`=CURTIME(),`horaSaida`=CURTIME() WHERE `idCartao`=:id");    
$result->execute([ ":id" => $id ]);