连接用户和用户元表-WordPress

连接用户和用户元表-WordPress,wordpress,Wordpress,我想从users和usermeta表中选择列 这是我的疑问: $sql = $wpdb->prepare( "SELECT {$wpdb->users}.ID FROM {$wpdb->users} WHERE {$wpdb->users}.user_registered <= '%s' AND {$wpdb->usermeta}.meta_key='custom_status' AND {$wpdb->userme

我想从
users
usermeta
表中选择列

这是我的疑问:

$sql = $wpdb->prepare(
    "SELECT {$wpdb->users}.ID FROM {$wpdb->users} 
    WHERE {$wpdb->users}.user_registered <= '%s' 
    AND {$wpdb->usermeta}.meta_key='custom_status' 
    AND {$wpdb->usermeta}.meta_value=0
    INNER JOIN {$wpdb->usermeta} ON {$wpdb->users}.ID= {$wpdb->usermeta}.user_id", $before);
$sql=$wpdb->prepare(
“从{$wpdb->users}中选择{$wpdb->users}.ID”
其中{$wpdb->users}.user\u registered usermeta}.meta\u key='custom\u status'
和{$wpdb->usermeta}.meta_值=0
内部联接{$wpdb->users}.ID={$wpdb->usermeta}.user_ID“,$before)上的{$wpdb->usermeta};
,但它没有选择任何内容。我知道我有一个用户的
meta\u值小于当前日期时间(
$before


这就是
$before
的用法:
2019-07-06 19:03:55
问题是您将
%s
占位符用单引号括起来。这是不需要的,因为WordPress将用包含传递给
prepare()
方法的值的适当字符串替换
%s
的所有实例

因此,考虑到这一点,您的代码变成:

$sql = $wpdb->prepare(
    "SELECT {$wpdb->users}.ID FROM {$wpdb->users} 
    WHERE {$wpdb->users}.user_registered <= %s 
    AND {$wpdb->usermeta}.meta_key='custom_status' 
    AND {$wpdb->usermeta}.meta_value=0
    INNER JOIN {$wpdb->usermeta} ON {$wpdb->users}.ID= {$wpdb->usermeta}.user_id", $before);

丢失
'%s'
中的单引号(应该是
%s
)。另外,我认为你的
内部连接应该放在
WHERE
子句之前?你可以把它作为答案。
$sql = $wpdb->prepare(
    "SELECT {$wpdb->users}.ID FROM {$wpdb->users} 
    INNER JOIN {$wpdb->usermeta} ON {$wpdb->users}.ID= {$wpdb->usermeta}.user_id
    WHERE {$wpdb->users}.user_registered <= %s 
    AND {$wpdb->usermeta}.meta_key='custom_status' 
    AND {$wpdb->usermeta}.meta_value=0", $before);