Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php WP-连接两个表的问题_Php_Sql_Wordpress_Join - Fatal编程技术网

Php WP-连接两个表的问题

Php WP-连接两个表的问题,php,sql,wordpress,join,Php,Sql,Wordpress,Join,我试图在互联网上找到答案,我发现了一些东西,但我不明白:-) 我只有两个表-wp_users和wp_usermeta。这两个表具有相同的ID(wp_users.ID和wp_usermeta.user_ID)。我只想从wp_用户那里获取电子邮件地址,并用wp_usermeta的昵称加入它 我是sql初学者,如果有人能解释一下,这将非常有帮助:-)非常感谢:-) 前面的回答和评论将有助于解决这个问题,但这里的主要问题是您正在查询一个不存在的列,wp\u usermeta.nickname 这是您需要

我试图在互联网上找到答案,我发现了一些东西,但我不明白:-)

我只有两个表-wp_users和wp_usermeta。这两个表具有相同的ID(wp_users.ID和wp_usermeta.user_ID)。我只想从wp_用户那里获取电子邮件地址,并用wp_usermeta的昵称加入它

我是sql初学者,如果有人能解释一下,这将非常有帮助:-)非常感谢:-)


前面的回答和评论将有助于解决这个问题,但这里的主要问题是您正在查询一个不存在的列,
wp\u usermeta.nickname

这是您需要做的:

$teacher_table = "SELECT wp_users.user_email, wp_usermeta.meta_value 
FROM wp_users INNER JOIN wp_usermeta ON wp_users.ID = wp_usermeta.user_id
WHERE wp_usermeta.meta_key = 'nickname'";
为了更好地度量代码的其余部分,请注意,返回的变量是一个对象,因此必须作为对象进行访问

 $results_table_main = $wpdb->get_results($teacher_table);

foreach ($results_table_main as $value){
   echo $value->user_email;
   echo $value->meta_value;
}

您根据需要使用了错误的查询

global $wpdb;
$sql = "SELECT u.user_email , 
       um.meta_value AS nickname
   FROM wp_users u
   INNER JOIN wp_usermeta um ON u.ID = um.user_id
   WHERE um.meta_key = 'nickname'";

$results = $wpdb->get_results($sql);

foreach ($results as $value){
    echo "EMAIL : ".$value->user_email . "<br/>";
    echo "NICKNAME : ".$value->nickname. "<br/>";
    echo '<br/>';
}
global$wpdb;
$sql=“选择用户\电子邮件,
作为昵称的um.meta_值
来自wp_用户
u.ID=um.user\u ID上的内部连接wp\u usermeta um
其中um.meta_key=‘昵称’;
$results=$wpdb->get_results($sql);
foreach(结果为$value){
回显“电子邮件:”.$value->user_EMAIL.
; 回显“昵称:”.$value->昵称“
”; 回声“
”; }

我认为这将是有益的

您尝试两次连接wp\u usermeta,一次使用内部连接表达式,一次使用from表达式中的逗号。此外,您尝试在字符串上运行
foreach
循环,应该是
foreach($results\u table\u main as$value)
现在我没有收到任何错误,但是echo也不会打印任何东西:-)呃,这是一个很难的问题:请给我一分钟,我给你写一个完整的答案:)我想问题在于操纵wp_usermeta。在wp_users中,该列被称为“user_email”,这一点非常清楚。但是我想从用户\u meta->meta\u key.昵称=这个昵称必须从meta\u value列中取出来:“-”,这就是为什么这么复杂的原因:-(加上一个foreach;)是的-逻辑上这是一条路:-)无论如何,仍然会得到错误->“可捕获的致命错误:类stdClass的对象无法转换为字符串。。。“我会尝试调试它:-)谢谢:-)@WheatBeak,请检查问题后的标签,然后提供答案…这个问题与Wordpress@vjytiwari是的,我从
$wpdb
wp_用户
以及
wp_用户元
收集了很多信息。。。。有什么问题?@WheatBeak仍然会给出错误,因为您没有将$wpdb声明为全局用户?对不起,您能解释一下,为什么您将字母“u”而不是wp_用户?而不是“wp_usermeta”,你把“嗯”。这让我非常困惑:-(为我编写代码很容易,这就是我使用别名的原因。它只是一个别名,您可以在表之后使用任何您想要的单词或字母,然后您不需要在查询的其余部分继续写出整个表名。您可以了解更多关于它们的信息
global $wpdb;
$sql = "SELECT u.user_email , 
       um.meta_value AS nickname
   FROM wp_users u
   INNER JOIN wp_usermeta um ON u.ID = um.user_id
   WHERE um.meta_key = 'nickname'";

$results = $wpdb->get_results($sql);

foreach ($results as $value){
    echo "EMAIL : ".$value->user_email . "<br/>";
    echo "NICKNAME : ".$value->nickname. "<br/>";
    echo '<br/>';
}