我正在尝试使用$ 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太多,因此请确保我一定会丢失一些东西。
在此感谢您的帮助。
谢谢!
答案 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
的用法,它们很重要:前者将由字符串代替,后者将由数字代替。