我创建了一个简单的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也共享相同的状态值,因为我的数据库有几个用户具有相同的牌照#但状态不同。
如何修改此查询以满足这两个条件?或者我还要写一个额外的查询?
答案 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