php - WordPress mysql 中的占位符

标签 php mysql wordpress

如何正确地将变量放入 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/

相关文章:

php - Laravel 护照与 'users' 不同的表

php - Redis 的 Eloquent 模型

php - Facebook - 解析输入 URL 时出错,没有数据被缓存,或者没有数据被抓取

php - 使用 Start 和 End 删除 PHP 文件中的字符串

javascript - 如果用户不是管理员,注销 jQuery?

css - 自定义字体在 Firefox 中不起作用。

php - 带有 pthreads 的 PHP 中的 Worker 和 Pool

php - 如何优化具有不同具体分数和排名的分数/排名表?

mysql - 这个查询可以不使用 Filesort 吗?

mysql - 如何在 mysql 存储过程中声明变量(本地,用户定义)?