从脚本发送时出现 SQL 语法错误

当我从 PHP 脚本发送此 SQL 时,我收到 SQL 语法错误,但是,如果我从 phpMyAdmin 运行它,它会按我预期的方式工作。


SQL:


DELIMITER $

    CREATE TRIGGER update_listing_count

    AFTER UPDATE ON `items`

    FOR EACH ROW BEGIN

        UPDATE `listings` SET units = (SELECT COUNT(*) FROM `items` WHERE listingid = NEW.listingid) WHERE id = NEW.listingid;

        UPDATE `listings` SET unitsSold = (SELECT COUNT(*) FROM `items` WHERE listingid = NEW.listingid AND sold = true) WHERE id = NEW.listingid;

    END$

    DELIMITER ;

PHP:


$conn = DBConnection();


    $stmt = $conn->prepare("DELIMITER $

    CREATE TRIGGER update_listing_count

    AFTER UPDATE ON `items`

    FOR EACH ROW BEGIN

        UPDATE `listings` SET units = (SELECT COUNT(*) FROM `items` WHERE listingid = NEW.listingid) WHERE id = NEW.listingid;

        UPDATE `listings` SET unitsSold = (SELECT COUNT(*) FROM `items` WHERE listingid = NEW.listingid AND sold = true) WHERE id = NEW.listingid;

    END$

    DELIMITER ;");

    $stmt->execute();

错误:


致命错误:未捕获的 PDOException:SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在itemsC:\xampp\htdocs\marketplace.php:25 中第 1 行的“DELIMITER $ CREATE TRIGGER update_listing_count AFTER UPDATE ON”附近使用的正确语法:#0 C: \xampp\htdocs\marketplace.php(25): PDOStatement->execute() #1 {main} 在第 25 行的 C:\xampp\htdocs\marketplace.php 中抛出


隔江千里
浏览 82回答 1
1回答

一只斗牛犬

答案是你不能使用 DELIMETER ON pdo...
打开App,查看更多内容
随时随地看视频慕课网APP