【问题标题】:Querying user_meta table to look up email in the wp_users table查询 user_meta 表以在 wp_users 表中查找电子邮件
【发布时间】:2014-01-26 01:47:27
【问题描述】:

我创建了一个简单的 html 表单来向我编写的 php 脚本提交一个值。我正在使用wordpress。我希望脚本在 user_meta 表中查找用户,然后选择用户 ID。然后我希望脚本在 wp_users 表中查找该用户的电子邮件。这是我的代码:

<?php
global $wpdb;
$userid = $wpdb->get_var  ( $wpdb->prepare (
"
SELECT user_id
FROM $wpdb->user_meta
WHERE user_meta = %s
",
 $_POST["submitted_value"] ) );

$useremail = $wpdb->get_var (
"
SELECT user_email
FROM $wpdb->wp_users
WHERE ID = %s
"
, $userid );

echo 'Car Owner Email is' . $useremail . '!';
echo "test" . $_POST["submitted_value"] ."!";

?>

现在,我已经运行了脚本,最后一行似乎正在运行——它正在从我的 html 表单中打印“submitted_value”——但它似乎没有查询数据库。

这是整个 php 脚本——我将它放在 wordpress 插件目录中——我是否需要添加任何其他内容才能查询我的 wordpress 数据库?

【问题讨论】:

    标签: php html mysql wordpress


    【解决方案1】:
        global $wpdb;
    $query1 = "SELECT user_id FROM wp_usermeta WHERE meta_key = 'your_meta_key_name' AND meta_value = '$_POST["submitted_value"]'";
    $userid = $wpdb->get_var($query1);
    
    $query = "SELECT user_email FROM wp_users WHERE ID = '$userid'";
    $useremail = $wpdb->get_var($query);
    
    1. 表名称是 wp_usermeta 而不是 wp_user_meta
    2. 在 WHERE 子句中,您需要提供一个元键来映射值。例如:WHERE meta_key = 'nickname' 和 meta_value = 'pranita'。 将“your_meta_key_name”替换为与表单值匹配的正确键。

    3. 如果您不了解字段,请检查 phpmyadmin 中的 wp_usermeta 表。

    希望这会有所帮助。万事如意

    【讨论】:

      【解决方案2】:

      你应该更新你的代码:

      <?php
      global $wpdb;
      $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_key = %s", //OR meta_value !!
          $_POST["submitted_value"]
      ));
      
      
      echo 'Car Owner Email is' . $userInfo->user_email. '!';
      echo "test" . $_POST["submitted_value"] ."!";
      
      ?>
      

      但是您可以按照 WP 法典轻松完成:http://codex.wordpress.org/Function_Reference/get_users/

      $users = get_users(array('meta_key' => $_POST["submitted_value"]));
      

      在这种情况下,您将获得所有可能的用户,您可能需要运行一个循环。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-05
        相关资源
        最近更新 更多