我需要在PHP中运行db创建脚本。 使用multi_query我发现触发器分隔符有一些问题:
$sql="
CREATE TABLE `test` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT);
DELIMITER ;;
CREATE TRIGGER `tr_insert_test` AFTER INSERT ON `test` FOR EACH ROW BEGIN UPDATE log SET dirty = 1 WHERE data = DATE(NEW.emissione); END;;
DELIMITER ;";
$mysqli->multi_query($sql);
有了这个我得到:
您的SQL语法中有错误;检查与您的MySQL服务器版本对应的手册,以便在'DELIMITER附近使用正确的语法;;在第1行插入“test”后创建TRIGGER tr_insert_test
如果我在phpmyadmin中尝试相同的脚本它可以工作......你能告诉我为什么吗? 感谢
答案 0 :(得分:1)
由于multi_query
(afaik)不处理自定义分隔符,最简单的方法可能是将它分成两个单独的普通查询,根本不需要分隔符;
<?php
$mysqli = new mysqli('localhost', 'test', '', 'test');
$sql = "CREATE TABLE `test` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY, emissione INT)";
$mysqli->query($sql);
$sql = "
CREATE TRIGGER `tr_insert_test` AFTER INSERT ON `test`
FOR EACH ROW BEGIN
UPDATE log SET dirty = 1 WHERE data = DATE(NEW.emissione);
END
";
$mysqli->query($sql);