$wpdb和MySQL CREATE触发器

时间:2013-12-22 作者:chabi

$wpdb\'s方法不接受MySQLCREATE TRIGGER 查询我试过了$wpdb->query( $sql_trigger ) 一次又一次没有成功。在phpMyAdmin上抛出create trigger查询触发器被创建,因此查询看起来很好。

$sql_trigger = "DELIMITER //
                CREATE TRIGGER triggerName
                BEFORE UPDATE
                ON `table_name`
                FOR EACH ROW
                BEGIN
                    IF NEW.amount < 0 THEN
                        SET NEW.amount = 0;
                    ELSEIF NEW.amount > 100 THEN
                        SET NEW.amount = 100;
                    END IF;
                END; //
                DELIMITER ;
                ";
刚刚读到EddyR使用mysqli创建触发器。https://wordpress.stackexchange.com/a/34653

是否没有办法使用WP的“本机函数”来创建mysql触发器,或者我做错了什么?

edit:像这样分离分隔符设置和查询(甚至从//$$)没有任何改变。还是一样的问题。

$sql_before_trigger = "DELIMITER $$";
$sql_after_trigger = "DELIMITER ;";

$wpdb->query( $sql_before_trigger );
$wpdb->query( $sql_trigger );
$wpdb->query( $sql_after_trigger );

1 个回复
最合适的回答,由SO网友:Mark Kaplun 整理而成

在您链接到的问题中,解决方案是使用mysqli_multi_query 作为执行SQL的API$wpdb desen没有API来执行多重查询,因此您不能直接使用它,但您可以从$wpdb->dbh 然后做一些类似的事情

$sql_trigger = "....";
mysqli_multi_query($wpdb->dbh,$sql_trigger);

结束

相关推荐

动态选择列名MySQL查询

$country=\"USA\"; $dr=$wpdb->get_results(\"SELECT $country FROM wp_shipping WHERE ID=$ids\"); 我想在WordPress文件中进行上述查询,其中动态地给出国家名称,但我不知道如何做到这一点。当我执行上述查询时,结果为nothing。