Php 在第二个查询中使用第一个查询的结果

Php 在第二个查询中使用第一个查询的结果,php,mysql,Php,Mysql,我的数据库中有两个表 blog(id、title、body和userid) 用户(id、用户名、姓氏、姓氏和关于) 我想从blog表中搜索一些关键字,并获得标题、正文和用户ID的结果。我想在第二个表select查询中使用userid。所以我可以显示博客作者的姓名(用户名) 基本上,我想在第二个查询(userid到username)中使用第一个查询的结果(userid) 我试过建议的答案 我认为内部连接可以解决我的问题,但它仍然没有解决 现在我的代码是 include_once "connect_

我的数据库中有两个表

blog(id、title、body和userid)

用户(id、用户名、姓氏、姓氏和关于)

我想从
blog
表中搜索一些关键字,并获得
标题
正文
用户ID
的结果。我想在第二个表select查询中使用
userid
。所以我可以显示博客作者的姓名(用户名)

基本上,我想在第二个
查询(userid到username)
中使用第一个查询的
结果(userid)

我试过建议的答案

我认为内部连接可以解决我的问题,但它仍然没有解决

现在我的代码是

include_once "connect_to_mysql.php";
$sql = mysql_query("SELECT blog.*, user.username FROM blog INNER JOIN user ON
user.id = blog.userid WHERE (title LIKE '%$search%' OR body LIKE '%$search%')");
// try with or without WHERE condition ...and also try with blog.title
while($row = mysql_fetch_array($sql)){
echo $row['username'];
echo $row['title'];
echo $row['user.username']; //try also
}
但是我什么都没有你能告诉我这些代码有什么问题吗


主键和外键有什么问题吗?你为什么不试着用内键连接

select blog.*, user.username, user.firstname,user.lastname,user.about from blog
inner join user on user.id = blog.userid

如果需要,您可以添加额外的where条件,这样您就不需要2个查询,只有查询结果集才能提供所有信息。

您可以使用内部联接或简单联接进行相同的操作,也可以使用blog表中用户id的外键作为参考。

尝试以下操作:

$mysqli = mysqli_connect("localhost", "my_user_name", "my_password", "database");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
$query ="SELECT b.*,u.username from blog as b INNER JOIN user as u ON b.userid= u.id ";

if ($result = $mysqli->query($query)) {

    /* fetch associative array */
    while ($row = $result->fetch_assoc()) {
         echo $row['username']." ".$row['title'];
    }

    /* free result set */
    $result->free();
}

您可以通过使用连接来实现这一点

select blog.title,blog.id,user.username,user.firstname,user.lastname,user.about from blog join user on user.id = blog.userid

您应该通过将这两个表合并得到结果。始终使用联接而不是子查询/内部查询。以下是获取所需输出的查询:

从blog中选择blog.*,user.username,user.firstname,user.lastname加入blog上的用户。userid=user.id

Table       index
blog        id primary key
blog        userid
user        id primary key

为获得更好的性能,请始终使用连接列的索引。

请提供一些您已经尝试过的代码。我尝试使用查询中的查询,如使用外键和内部连接现在我有一些代码。。。。有人能告诉我这些代码有什么问题吗?答案是@Abhik'sthanks先生还有一个问题我可以在哪里使用类似title的关键字,否则blog.title like我在($row=mysql_fetch_array($sql)){echo$row[3];echo$row['username'];echo$row['user.username'];}时尝试了这两种方法我尝试了建议的答案,我认为内部连接可以解决我的问题,但现在仍然没有解决,我的代码是include_once“connect_to_mysql.php”$sql=mysql_query(“选择blog.*,user.username FROM blog internal JOIN user ON user.id=blog.userid WHERE(标题类似“%$search%”或正文类似“%$search%””);//尝试使用WHERE条件或不使用WHERE条件…也尝试使用blog.title while($row=mysql_fetch_array($sql)){echo$row['username'];echo$row['user.username'];echo$row['user.username'];//也尝试一下}但是我没有得到任何结果。你能告诉我这些代码有什么问题吗
Table       index
blog        id primary key
blog        userid
user        id primary key