因此,我只是想创建一个基本的搜索栏,以增加我的php和mysql知识,但我严重困惑。
我已经遵循了一个教程,并发挥了自己的代码,但我在一个不知所措的搜索查询类的工作,它将显示结果,但结果显示是一点也不像搜索查询,它显示了许多重复的结果。
我有两个不同的人与2个不同的产品链接到他们,这是它所显示的。
这是我正在搜索的查询。
这是我的代码,我希望有人有更多的知识可以帮助,希望这不仅仅是我犯的一个简单的错误:o
<?php
$query = $_GET['q'];
// gets value sent over search form
$min_length = 3;
// you can set minimum length of the query if you want
if(strlen($query) >= $min_length){ // if query length is more or equal minimum length then
$query = htmlspecialchars($query);
// changes characters used in html to their equivalents, for example: < to >
$query = mysql_real_escape_string($query);
// makes sure nobody uses SQL injection
$raw_results = DB::query("SELECT * FROM forsale, users WHERE forsale.productname LIKE '%" . $query . "%' OR users.username LIKE '%" . $query ."%'");
if (count($raw_results) > 0) {
foreach($raw_results as $results) {
echo $results['productname'];
echo $results['username'];
echo $results['price'];
}
}else{ // if there is no matching rows do following
echo "No results";
}
}else{ // if query length is less than minimum
echo "Minimum length is ".$min_length;
}
?>
事先非常感谢。
2条答案
按热度按时间lndjwyie1#
作为检查它是否工作的快速修复,您需要使用用户id将两个表链接在一起。。。
我想推荐使用更新的连接格式(https://dev.mysql.com/doc/refman/8.0/en/join.html)以及使用准备好的语句和绑定变量。
2exbekwf2#
试试这个:
$raw_results = DB::query("SELECT f.* FROM forsale f LEFT JOIN users u ON f.user_id = u.id WHERE f.productname LIKE '%" . $query . "%' OR u.username LIKE '%" . $query ."%'");
你真的需要LEFT JOIN
为使查询正常工作,请单击它们。