【问题标题】:Matching multiple values in wp_usermeta to get email from wp_users table匹配 wp_usermeta 中的多个值以从 wp_users 表中获取电子邮件
【发布时间】:2014-01-19 02:32:46
【问题描述】:

我创建了一个简单的 html 表单来向我编写的 php 脚本提交两个值,即车牌号和状态。我正在使用wordpress。我希望脚本在 wp_usermeta 表中查找用户,并选择具有与表单中提交的 license_plate 和 state 匹配的 meta_value 条目的用户 ID。然后我希望脚本在 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 也共享相同的 state 值,因为我的数据库有几个用户具有相同的车牌 # 但不同的状态。

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

【问题讨论】:

  • 您是否将statelicense plate # 存储在usermeta 中?对应的meta_key是什么?
  • 是的,它们都存储在 usermeta 中。 license_plate 的键是 license_plate 而 state 是 state。

标签: php mysql sql wordpress


【解决方案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

【讨论】:

  • @user3068211 - 好的,我们需要解决这个问题...尝试在上述查询中传递一个硬编码的 license_plate 和状态,例如 ...plate.meta_value = 'some plate no.' AND state.meta_value = 'some text' 确保这些车牌号和状态组合存在。
  • 还要检查我给出的 SQL Fiddle 是否与您的场景相对应。因为这个查询显然在小提琴中起作用
  • 是的,SQL Fiddle 确实符合我的场景。在将查询存储在变量中之后,我已将脚本设置为打印查询。这就是我得到的:$userInfo = $wpdb->get_results( $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 )); echo $userInfo; 服务器正在打印“数组”
  • 现在可以在使用 $wpdb->get_row 进行查询之后。
  • 感谢@hashbrown,您拥有并将永远是完成一个早晨的“完美代码”。
猜你喜欢
  • 2014-01-26
  • 1970-01-01
  • 1970-01-01
  • 2017-01-03
  • 1970-01-01
  • 2013-11-26
  • 2023-03-24
  • 1970-01-01
  • 2011-12-28
相关资源
最近更新 更多