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