php搜索

3yhwsihp  于 2021-06-23  发布在  Mysql
关注(0)|答案(2)|浏览(381)

因此,我只是想创建一个基本的搜索栏,以增加我的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 &gt;

    $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;
}

?>
事先非常感谢。

lndjwyie

lndjwyie1#

作为检查它是否工作的快速修复,您需要使用用户id将两个表链接在一起。。。

$raw_results = DB::query("SELECT  * 
                           FROM forsale, users 
                           WHERE forsale.user_id = users.user_id
                               and (forsale.productname LIKE '%" . $query .  "%' 
                                 OR users.username LIKE '%" . $query ."%'"));

我想推荐使用更新的连接格式(https://dev.mysql.com/doc/refman/8.0/en/join.html)以及使用准备好的语句和绑定变量。

2exbekwf

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 为使查询正常工作,请单击它们。

相关问题