我不知道这句话出了什么问题。 $ wpdb->查询更新

时间:2018-12-12 23:43:33

标签: sql wordpress

我正在尝试使用$ wpdb-query方法,但似乎无法使其正常工作。

尝试以下操作时出现500错误:

$update_status = $wpdb->query($wpdb->prepare("UPDATE {$wpdb->prefix}wcpv_commissions SET commission_status = '".$status."' WHERE vendor_id = '".$vendor_id."' AND order_date BETWEEN '".$date1."' AND '".$date2."'"));

这里是否缺少我想要的东西。我没有使用$ wpdb太多,因此请确保我一定会丢失一些东西。

在此感谢您的帮助。

谢谢!

1 个答案:

答案 0 :(得分:0)

$wpdb::prepare()需要两个参数,而您只提供了一个参数(即使它按原样工作,也可以进行SQL注入攻击)。

您需要将变量作为第二个参数传递给数组,以使prepare()起作用:

$update_status = $wpdb->query(
    $wpdb->prepare(
        "UPDATE {$wpdb->prefix}wcpv_commissions SET commission_status = %s WHERE vendor_id = %d AND order_date BETWEEN %s AND %s",
        array($status, $vendor_id, $date1, $date2)
    )
);

请注意占位符%s%d的用法,它们很重要:前者将由字符串代替,后者将由数字代替。