亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我在 SQL 事務中收到 Uncaught PDO Exepction 錯誤

我在 SQL 事務中收到 Uncaught PDO Exepction 錯誤

PHP
慕桂英4014372 2023-03-04 17:30:42
這段代碼:$sql = '    START TRANSACTION;    INSERT INTO translation (lang, author, title, text)      VALUES(:lang, :author, :title, :text);    INSERT INTO article (translation, author, category, views, banner, visible)       VALUES(LAST_INSERT_ID(), :author, :category, 0, :banner, :visible);    COMMIT;';    $params = array("lang" => $lang,                     "author" => $author,                     "title" => $title,                     "text" => $content,                     "category" => $category,                     "banner" => $banner,                     "visible" => $v);    $stmt = $conn->prepare($sql);    $stmt->execute($params);給我這個錯誤:Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INSERT INTO translation (lang, author, title, text) VALUES(?, ?, ?, ?); ' at line 2 in C:\xampp\htdocs\admin\add-article.php:57 Stack trace: #0 C:\xampp\htdocs\admin\add-article.php(57): PDO->prepare('\r\n START TRA...') #1 {main} thrown in C:\xampp\htdocs\admin\add-article.php on line 57這是我第一次嘗試使用 PDO 事務。我直接在 phpMyAdmin 中嘗試了這個 sqlBEGIN;    INSERT INTO translation (lang, author, title, text)      VALUES(1, 2, "test", "test");    INSERT INTO article (translation, author, category, views, banner, visible)       VALUES(LAST_INSERT_ID(), 2, 1, 100, "", 1);COMMIT;它有效,但在 php 腳本中無效。我根據這篇文章寫了“開始交易” 有什么想法嗎?
查看完整描述

1 回答

?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

您需要單獨運行每個查詢。


此外,通常事務包含在 try catch 中。


 try {

    $pdo->beginTransaction();

    $sql = 'INSERT INTO translation (lang, author, title, text)

        VALUES(:lang, :author, :title, :text)';

    $params = array("lang" => $lang, 

                    "author" => $author, 

                    "title" => $title, 

                    "text" => $content, 

    );

    $stmt = $conn->prepare($sql);

    $stmt->execute($params);    


    $sql = 'INSERT INTO article (translation, author, category, views, banner, visible) 

        VALUES(LAST_INSERT_ID(), :author, :category, 0, :banner, :visible)';

    $params = array(

                    "author" => $author, 

                    "category" => $category, 

                    "banner" => $banner, 

                    "visible" => $v

    );

    $stmt = $conn->prepare($sql);

    $stmt->execute($params);    


    $pdo->commit();

}catch (Exception $e){

    $pdo->rollback();

    throw $e;

}


查看完整回答
反對 回復 2023-03-04
  • 1 回答
  • 0 關注
  • 116 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號