我可以使用$wpdb->Prepare运行多个查询吗?

时间:2015-03-30 作者:webaholik

我有一个查询(实际上是多个查询)可以在phpmyadmin中完美运行,(我也尝试过get_var 代替get_results, 但我想我可能需要一个替代品$wpdb->prepare. 我怎样才能一次完成这一切?

function myfunction( $campaign_id = 0 ) {
    global $wpdb;
    $coupon_code = $wpdb->get_results(  $wpdb->prepare( "SET @update_code := 0;
                UPDATE " . $wpdb->prefix . "my_table SET status = 1, code = (SELECT @update_code := code)
                WHERE campaign_id = %d AND status IS NULL LIMIT 1;
                SELECT @update_code as code;
                ",$campaign_id ) );
return $coupon_code->code;
}
错误

WordPress database error 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 wp_my_table SET status = 1, code = (SELECT @update_code := code)\' at line 2
for query: (runs perfectly in phpmyadmin)
SET @update_code := 0;
UPDATE wp_my_table SET status = 1, code = (SELECT @update_code := code)
WHERE campaign_id = 0 AND status IS NULL LIMIT 1;
SELECT @update_code as code;

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

Outside of subqueries, MySQL一次只处理1个查询。当通过phpmyadmin运行sql语句时,它只会依次执行一个查询。要在WordPress中执行相同的操作,您似乎只需在每个$wpdb 对象(如果需要,可以有子查询,但这里不需要)。

结束

相关推荐

Theme styling for plugins

我有一个插件,它有自己的CSS,用于在使用相关短代码时生成的内容。我正在尝试创建一个主题来重新设置我网站前端的样式,但由于这个插件有自己的CSS,我如何在新主题中修改它?