-2

テーブルのレコードを更新しようとしていますが、次のエラーが発生します...

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 '(`First_Name`,`Surname`,`Nicknames`' at line 1Number of rows added: Go back 

私のコードは次のとおりです。

// Connection data (server_address, database, name, poassword)
$hostdb = 'localhost';
$namedb = '_co_';
$userdb = '';
$passdb = '';

try {
  // Connect and create the PDO object
 $conn = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb);
$conn->exec("SET CHARACTER SET utf8");      // Sets encoding UTF-8
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

 $sql = "UPDATE `directory` (`First_Name`,`Surname`,`Nicknames`) 
      VALUES (:firstname, :surname, :nicknames)
      WHERE ID = :cid

      ;



      ";



 $statement = $conn->prepare($sql);
 $statement->bindValue(":cid", $cid);
 $statement->bindValue(":firstname", $firstname);
 $statement->bindValue(":surname", $surname);
 $statement->bindValue(":nicknames", $nicknames);
4

4 に答える 4

1

SQL構文が間違っています:

UPDATE `directory`
SET `First_Name` = :firstname, `Surname` = :surname, `Nicknames` = :nicknames
WHERE ID = :cid
于 2013-01-06T18:45:15.897 に答える
1

UPDATEこれは、クエリが機能する方法ではありません。

UPDATE `directory` SET `First_Name` = :firstname, `Surname` = :surname, `Nicknames` = :nicknames WHERE ID = :cid

推測するだけではそれほど遠くないので、SQLが一般的にどのように機能するかを調べることをお勧めします。使用しようとした構文はINSERTステートメント用です。

于 2013-01-06T18:45:25.453 に答える
1

SQL更新の構文は、挿入の構文と同じではありません

UPDATE `directory` 
   SET `First_Name` = :firstname,
       `Surname` = :surname,
       `Nicknames` = :nicknames
 WHERE `ID` = :cid
于 2013-01-06T18:45:37.507 に答える
1

更新ステートメントが間違っています。そのはず:

   update directory set firstname=:firstname, surname=:surname, ...;
于 2013-01-06T18:45:48.870 に答える