我的数据库中有两个表
blog (id, title, body and userid)
user (id, username,firstname, lastname and about)
我想在blog
表格中搜索某些关键字的内容,并获得title
,body
和userid
的结果。我想在第二个表选择查询中使用userid
。所以我可以显示博客作者的name(username)
。
基本上我想在第二个result(userid)
query(userid to username)
modified after suggestion **help me**
我尝试了建议的答案
我认为INNER Join可以解决我的问题但仍然没有解决
现在我的代码是
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
}
但是我没有告诉我这些代码有什么问题
答案 0 :(得分:1)
Whey你不尝试内部加入
select blog.*, user.username, user.firstname,user.lastname,user.about from blog
inner join user on user.id = blog.userid
你可以添加额外的where where条件,如果没有,这样你就不需要2个查询,只有查询结果集会给你一切。
答案 1 :(得分:0)
尝试这个:
$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();
}
答案 2 :(得分:0)
您可以使用联接
来实现此目的select blog.title,blog.id,user.username,user.firstname,user.lastname,user.about from blog join user on user.id = blog.userid
答案 3 :(得分:0)
您应该通过加入这两个表来获得结果。始终使用连接而不是使用子查询/内部查询。下面是获取欲望输出的查询:
select blog.*,user.username,user.firstname,user.lastname from blog JOIN user on blog.userid=user.id;
Table index
blog id primary key
blog userid
user id primary key
为了获得更好的性能,请始终拥有连接列的索引。
答案 4 :(得分:-1)
您可以使用内部联接或简单联接,也可以在博客表中使用用户ID的外键作为参考