我有這個疑問:爲什麼更新查詢不起作用?
START TRANSACTION;
UPDATE users SET events = 0 WHERE id = 10;
UPDATE events SET seen = 1 WHERE author_id = 10 AND seen is NULL;
COMMIT;
當我執行,在phpMyAdmin的,它的工作原理也是如此。但是當我想要執行由PHP:
$stm = $dbh->prepare("START TRANSACTION;
UPDATE users SET events = 0 WHERE id = ?;
UPDATE events SET seen = 1 WHERE author_id = ? AND seen is NULL;
COMMIT;");
$stm->execute(array($user_id, $user_id));
它拋出一個錯誤:
Fatal error: Uncaught exception 'PDOException' with message '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 'UPDATE users SET events = 0 WHERE id = ?; UPDATE events SET seen = 1 ' at line 2' in C:\xampp\htdocs\myweb\really_test.php:306 Stack trace: #0 C:\xampp\htdocs\myweb\really_test.php(306): PDO->prepare('START TRANSACTI...') #1 {main} thrown in C:\xampp\htdocs\myweb\really_test.php on line 306
我怎樣才能解決這個問題?
您需要一個圍繞您的查詢的過程。 –
@juergend爲什麼?我從來沒有使用過程迄今,一切都很好, –
http://php.net/manual/en/pdo.transactions.php你想'beginTransaction()'和'commit()'。 –