PDO sql语句中的语法错误

时间:2016-04-06 09:03:46

标签: php mysql sql

我在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 个答案:

答案 0 :(得分:4)

1)在SQL中,''中引用的任何内容都是字符串。您不能将它用作列/表/数据库名称。 MySQL专门使用``为列/表/数据库提供引用,通常使用它作为在使用数据名称等关键字时转义MySQL保留关键字。

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

3)您还应该知道如何正确使用准备好的陈述。

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

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