PHP在一个语句错误中更新多个表

时间:2017-04-05 14:29:51

标签: php mysql

我尝试了很多我在stackoverflow上找到的解决方案,但在尝试在一个语句中更新我的表时仍然遇到同样的错误。

ERROR:

  

SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;检查与您的MariaDB服务器版本对应的手册,以便在第2行的“WHERE docID = 7”附近使用正确的语法

代码:

  <?php

    if(isset($_POST['btn-revActivate']))
    {
      try
  {
        $database = new Database();
        $db = $database->dbConnection();
        $conn = $db;


    $stmt=$conn->prepare("UPDATE tbl_revisions, tbl_documents SET revStatus='Active', docStatus='Draft'
              WHERE revID=$rid AND docID=$docID ");
    $stmt->bindparam("revStatus",$revStatus);
    $stmt->bindparam(":id",$rid);
    $stmt->bindparam("docStatus",$docStatus);
    $stmt->bindparam(":docID",$docID);
    $stmt->execute();
    return true;

  }
  catch(PDOException $e)
  {
   echo $e->getMessage();
   return false;
  }
  }

   ?>

有人可以帮忙,因为我不知道这句话有什么问题。 感谢。

1 个答案:

答案 0 :(得分:1)

您无法在一个语句中更新多个表。如果要更新,则可以使用事务来确保以原子方式处理两个UPDATE语句。

BEGIN TRANSACTION;

UPDATE tbl_revisions

SET revStatus='Active', docStatus='Draft'
              WHERE revID=$rid AND docID=$docID ';

UPDATE tbl_documents
SET revStatus='Active', docStatus='Draft'
              WHERE revID=$rid AND docID=$docID ';

COMMIT;

了解更多信息

https://dev.mysql.com/doc/refman/5.7/en/commit.html