我在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 ]);