在另一个 SQL 查询中执行一个 SQL 查询
Execute an SQL query inside another SQL query
好吧,我认为这个标题不是最好的标题,但让我解释一下我的问题:我正在创建一个需要显示 posts 人(无论如何)的网站,并且我有显示他们的头像的个人资料图片,所以这就是我所做的:
<?php
function get_gravatar( $email, $s = 80, $d = 'mm', $r = 'g', $img = false, $atts = array() ) {
$url = 'https://www.gravatar.com/avatar/';
$url .= md5( strtolower( trim( $email ) ) );
$url .= "?s=$s&d=$d&r=$r";
if ( $img ) {
$url = '<img src="' . $url . '"';
foreach ( $atts as $key => $val )
$url .= ' ' . $key . '="' . $val . '"';
$url .= ' />';
}
return $url;
}
require("db.php");
$sql = "SELECT * FROM posts ORDER BY date DESC";
foreach ($db->query($sql) as $row) {
// var_dump($row);
$user = $row['user_id'];
$sql_user = "SELECT email FROM users WHERE id = $user";
foreach ($db->$sql_user as $row_user) {
var_dump($row_user);
echo "<img src=\"".get_gravatar($row_user['email'])."\"/>";
}
echo "<h2>".$row['title']."</h2><br/>";
echo "<p>".$row['content']."</p><br/>";
}
但是,它不起作用(好吧,它起作用了,但它没有向我显示用户的个人资料图片,只有 post)。
所以,我认为问题是我不能同时调用 2 次变量 $db
,但我不确定,所以这就是 m=为什么我要问是否有办法解决我的问题还是要同时 select 2 个表。
使用join
SELECT * FROM users join posts on users.id =Posts.user_id ORDER BY date DESC
你可以直接使用 JOIN
JOIN clause is used to combine rows from two or more tables, based on
a related column between them.
您没有在第二个 foreach
中将查询应用于 sql 字符串
foreach ($db->query($sql_user) as $row_user) {
看看你错过的第二个 foreach 查询函数
foreach ($db->query($sql) as $row) {
foreach ($db->query($sql_user) as $row_user) {
你可以缩短你的逻辑
$sql="SELECT u.email "
. "FROM posts AS p "
. "LEFT JOIN users AS u "
. "ON u.id=p.user_id "
. "ORDER BY p.date DESC";
好吧,我认为这个标题不是最好的标题,但让我解释一下我的问题:我正在创建一个需要显示 posts 人(无论如何)的网站,并且我有显示他们的头像的个人资料图片,所以这就是我所做的:
<?php
function get_gravatar( $email, $s = 80, $d = 'mm', $r = 'g', $img = false, $atts = array() ) {
$url = 'https://www.gravatar.com/avatar/';
$url .= md5( strtolower( trim( $email ) ) );
$url .= "?s=$s&d=$d&r=$r";
if ( $img ) {
$url = '<img src="' . $url . '"';
foreach ( $atts as $key => $val )
$url .= ' ' . $key . '="' . $val . '"';
$url .= ' />';
}
return $url;
}
require("db.php");
$sql = "SELECT * FROM posts ORDER BY date DESC";
foreach ($db->query($sql) as $row) {
// var_dump($row);
$user = $row['user_id'];
$sql_user = "SELECT email FROM users WHERE id = $user";
foreach ($db->$sql_user as $row_user) {
var_dump($row_user);
echo "<img src=\"".get_gravatar($row_user['email'])."\"/>";
}
echo "<h2>".$row['title']."</h2><br/>";
echo "<p>".$row['content']."</p><br/>";
}
但是,它不起作用(好吧,它起作用了,但它没有向我显示用户的个人资料图片,只有 post)。
所以,我认为问题是我不能同时调用 2 次变量 $db
,但我不确定,所以这就是 m=为什么我要问是否有办法解决我的问题还是要同时 select 2 个表。
使用join
SELECT * FROM users join posts on users.id =Posts.user_id ORDER BY date DESC
你可以直接使用 JOIN
JOIN clause is used to combine rows from two or more tables, based on a related column between them.
您没有在第二个 foreach
中将查询应用于 sql 字符串 foreach ($db->query($sql_user) as $row_user) {
看看你错过的第二个 foreach 查询函数
foreach ($db->query($sql) as $row) {
foreach ($db->query($sql_user) as $row_user) {
你可以缩短你的逻辑
$sql="SELECT u.email "
. "FROM posts AS p "
. "LEFT JOIN users AS u "
. "ON u.id=p.user_id "
. "ORDER BY p.date DESC";