如何正确地将变量放入 WordPress 的 mysql 语句中?
我尝试了date = %d
,但它不起作用,我应该这样做date='$date'
:
$date = $v_date->DATE;
$count = $wpdb->get_results($wpdb->prepare(
" SELECT DISTINCT `date`,
(select subscriber_count FROM wp_email_signup where LIST_NAME = 'B' AND date = %d) as 'B',
(select subscriber_count FROM wp_email_signup where LIST_NAME = '2D' AND date = %d ) as 'D',
(select subscriber_count FROM wp_email_signup where LIST_NAME = 'F' AND date = %d ) as 'F'
FROM wp_email_signup WHERE date = %d", $date));
最佳答案
您的日期不是整数,这就是它不起作用的原因。
prepare 的查询参数接受类似 sprintf() 的占位符。
%s(字符串)
%d(整数)
%f( float )
支持格式。 (%s 和 %d 占位符自版本 2.3 中将函数添加到核心以来就可用,%f 仅自版本 3.3 起可用。)任何其他 % 字符除非进行转义,否则可能会导致解析错误。
SQL 字符串文字中的所有 % 字符(包括 LIKE 通配符)必须以双 % 转义为 %%。查询字符串中的所有 %d、%f 和 %s 均不加引号。
请注意,%d 占位符仅接受整数,因此您无法通过 %d 传递包含逗号值的数字。如果您需要逗号值,请使用 %f 作为 float 。 p>
了解更多 https://codex.wordpress.org/Class_Reference/wpdb#Placeholders
关于php - WordPress mysql 中的占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30069563/