查询user_meta表以在wp_users表中查找电子邮件

时间:2014-01-08 05:15:07

标签: php html mysql wordpress

我创建了一个简单的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数据库?

2 个答案:

答案 0 :(得分:0)

您应该更新代码:

<?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 codex:http://codex.wordpress.org/Function_Reference/get_users/

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

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

答案 1 :(得分:0)

    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表。

  4. 希望这会有所帮助。所有最好的