- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个我制作的搜索框脚本。它在用户输入的 mysql 数据库中查找具有匹配查询的用户,例如用户名、位置等。
当我将其设置为从数据库中的一个表(即“ptb_profiles”)中进行选择时,该脚本工作正常,但是当我尝试添加更多表以供其搜索时,它不喜欢它并多次列出同一用户。它应该只根据用户输入的搜索查询为每个用户显示一次。
我已经对搜索结果的数量进行了限制,以节省空间并允许用户在单独的窗口中打开更多结果(但尚未完成)。需要明确的是,我不想将搜索限制为一个结果,而是列出 5 个结果,并且每个结果仅显示一次,具体取决于用户是否在 ptb_profiles 下搜索 display_name、在 ptb_stats 下搜索国籍或在 ptb_users 下搜索电子邮件。
任何人都可以建议我在 where 子句中哪里出了问题吗?谢谢。
<form method="get" action="">
<input type="text" name="query" class="search" placeholder="Search Name/Location" style="width:120px;"/>
<input type="image" src="../PTB1/assets/img/icons/loginarrow1.png" class="searchbutton" name="submit" value="Start Search" />
</form>
<?php
//PHP CODE STARTS HERE
if(isset($_GET['submit'])){
// Change the fields below as per the requirements
$db_host="localhost";
$db_username="root";
$db_password="";
$db_name="playtime";
$db_tb_atr_name="display_name";
//Now we are going to write a script that will do search task
// leave the below fields as it is except while loop, which will display results on screen
mysql_connect("$db_host","$db_username","$db_password");
mysql_select_db("$db_name");
$query=mysql_real_escape_string($_GET['query']);
$query_for_result=mysql_query("SELECT *
FROM ptb_profiles p, ptb_stats s, ptb_users u
WHERE p.display_name like '%".$query."%'
OR p.location LIKE '%".$query."%' OR p.hobbies LIKE '%".$query."%' OR s.nationality LIKE '%".$query."%'
LIMIT 5");
echo "<div class=\"search-results\">";
while($data_fetch=mysql_fetch_array($query_for_result))
{
echo "<div class=\"spacing\"><a href=\"profile.php?id={$data_fetch['user_id']}\" class=\"search\">";
echo "<img width=40px height= 40px src=\"data/photos/{$data_fetch['user_id']}/_default.jpg\" class=\"boxgridsearch\"/> ";
echo substr($data_fetch[$db_tb_atr_name], 0,160);
echo "</a></div>";
}
echo "<div class=\"morebutton-search\"><a href=\"echo '%".$query."%'\">+ view more results</a></div>";
mysql_close();
}
?>
p.s 如果有人知道我如何创建一个超链接将用户带到一个新页面,在新窗口中列出他们当前的搜索查询,但显然这次显示超过 5 个并显示该搜索的所有结果,我会真的太棒了。
我已经尝试过这个,但它很可能完全错误,因为它不起作用:
echo "<div class=\"morebutton-search\"><a href=\"echo '%".$query."%'\">+ view more results</a>
最佳答案
您正在做的是交叉连接。其中,配置文件表、统计表和用户表中的所有行都合并到一张包含所有各种组合的表中。因此,您会多次获得同一用户。
您需要的是“内部联接”或表之间的某种连接来缩小选择范围。
如果您确实需要“交叉连接”,请按照 MAXIM 的建议使用 DISTINCT 关键字。
关于php - 搜索框Where子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13808035/
我是一名优秀的程序员,十分优秀!