$wpdb->WordPress更新后准备错误

时间:2012-12-16 作者:user24903

Possible Duplicate:
$wpdb->prepare() warning in WordPress 3.5

将Wordpress更新为3.5后,我面临一个错误,我知道有错误,但我无法修复。

这是代码:

 $wpdb->prepare("INSERT INTO $orders_table ( theme_name, user_id, order_status, order_verified, order_date, order_payment_method, order_ip  )VALUES ( %s,  %d,  %d,  %d,  %s,  %s, %s)",$theme_name, $user_id, $order_status, $order_verified, $date_now, $order_payment_method, $ip)

$wpdb->prepare("SELECT COUNT(*) FROM $orders_table where theme_name=\'$theme_name\' && order_verified = \'1\';")

$wpdb->prepare("SELECT COUNT(*) FROM $orders_table where theme_name=\'$theme_name\' && order_verified = \'1\' && DAY(order_date) = \'$fa_today\' && MONTH(order_date) = \'$fa_this_month\' && YEAR(order_date) = \'$fa_this_year\';")
有人能更新上面的代码吗?

谢谢

2 个回复
SO网友:Mamaduka

由于缺少第二个参数,有关更多信息,请参阅此帖子-http://make.wordpress.org/core/2012/12/12/php-warning-missing-argument-2-for-wpdb-prepare/.

此外,出于安全原因,您不应该将变量直接传递到查询中,这就是为什么您应该使用prepare() 方法-请参阅Codex 获取使用信息。

SO网友:Mark Kaplun

您应该将该字符串中的变量(theme\\u name和user\\u id)作为参数传递,并使用%s和%d作为占位符,就像在sprintf类函数中一样。

$wpdb->prepare("SELECT order_id FROM $orders_table WHERE theme_name=\'%s\' && user_id=\'%d\' && order_status=\'0\' && order_verified =\'0\' ",$theme_name,$user_id)

结束

相关推荐

Foreach循环中的wpdb只返回第一个结果-发现了其他两个类似的情况

@Milo问题已解决,在数组$arrname中找到了空格。我试图使用post\\u name获取post id。首先,我将所有post\\u名称存储在一个数组中,然后在该数组中循环使用wpdb查询中的key变量来获取post id,虽然很奇怪,但它只返回第一个post id。如您所见,我尝试输出数组,它工作正常,输出该数组中的每个键值,但wpdb查询只返回第一个结果(尝试切换数组中键值的顺序,确认它只输出第一个结果)。有什么想法吗?global $wpdb; $rawname=$_POST[\'i