匹配wp_usermeta中的多个值以从wp_users表中获取电子邮件

时间:2014-01-19 02:32:46

标签: php mysql sql wordpress

我创建了一个简单的html表单,将两个值,牌照#和状态提交到我编写的php脚本中。我正在使用wordpress。我希望脚本在wp_usermeta表中查找用户,并选择具有meta_value条目的用户ID,该meta_value条目与表单中提交的license_plate和state相匹配。然后,我希望脚本在wp_users表中查找该用户的电子邮件。这是我的代码:

$license_plate = $_POST['license_plate'];
$state = $_POST['state'];

$userInfo = $wpdb->get_row  ( $wpdb->prepare ("
    SELECT user_id, user_email
    FROM $wpdb->usermeta um
    INNER JOIN $wpdb->users u ON (u.ID=um.user_id)
    WHERE meta_value = %s", //OR meta_value !!
    $license_plate
));

到目前为止,我可以根据license_plate meta_value获取user_email,但我想确保相关的user_id也共享相同的状态值,因为我的数据库有几个用户具有相同的牌照#但状态不同。

如何修改此查询以满足这两个条件?或者我还要写一个额外的查询?

1 个答案:

答案 0 :(得分:1)

尝试此查询,

$wpdb->prepare ("SELECT u.id, u.user_email
FROM $wpdb->usermeta plate, $wpdb->usermeta state, $wpdb->users u
WHERE plate.user_id = state.user_id
AND plate.meta_key = 'license_plate'
AND state.meta_key = 'state'
AND u.ID = plate.user_id
AND plate.meta_value = %s
AND state.meta_value = %s", $license_plate, $state)

这是同样的SQLFiddle:http://sqlfiddle.com/#!2/cbc58/3