2016-04-06 21 views
-4

このコードでは、SQL文($ result)に問題があります。私はWHERE 'idCartao'='$id'に構文エラーがあります。PDO SQL文の構文エラー

<?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; 
?> 
+7

INSERTクエリ –

+3

でWHERE句はたぶん、あなたは、UPDATE句(https://dev.mysql.com/docを探している場所を追加することはできません。 /refman/5.5/en/update.html) – Delphine

+1

それに加えて、 'INSERT'文に' WHERE'節を追加することはできません。列名を '' ''で囲むのではなく、' ' – Daan

答えて

4

1)''に引用されているものはすべて文字列です。カラム/テーブル/データベース名としては使用できません。 MySQLは具体的には``を使用してカラム/テーブル/データベースの引用を提供していますが、データ名などのキーワードを使用する場合は、MySQL予約キーワードをエスケープするために使用することをお勧めします。

2)INSERT ... VALUESWHEREとは機能しません。おそらくUPDATEを使用する予定ですか?わからない、質問からはっきりしない。

3)準備文を適切に使用する方法も知っておく必要があります。

全体的に、あなたはおそらく次のことを行う必要があるでしょう:

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