首页 > 解决方案 > 创建一个搜索表单,我哪里出错了?

问题描述

我是 PHP 新手并创建了一个搜索表单,该表单包含在头文件中并在每个页面中调用。基本上,当用户输入一个单词并单击搜索时,我希望结果显示在新页面中。

这是我的表单 HTML 代码

<form action="search.php" method="GET">
    <input type="text" name="query" />
    <input type="submit" value="Search" />
</form>

这是我的数据库连接表单中的内容:

<?php
class DBController {
    private $host = "localhost";
    private $user = "root";
    private $password = "mypass123";
    private $database = "topgrub";
    private $conn;

    function __construct() {
        $this->conn = $this->connectDB();
    }

    function connectDB() {
        $conn = mysqli_connect($this->host,$this->user,$this->password,$this->database);
        return $conn;
    }

    function runQuery($query) {
        $result = mysqli_query($this->conn,$query);
        while($row=mysqli_fetch_assoc($result)) {
            $resultset[] = $row;
        }       
        if(!empty($resultset))
            return $resultset;
    }

    function numRows($query) {
        $result  = mysqli_query($this->conn,$query);
        $rowcount = mysqli_num_rows($result);
        return $rowcount;   
    }

    function updateQuery($query) {
        $result = mysqli_query($this->conn,$query);
        if (!$result) {
            die('Invalid query: ' . mysqli_error($this->conn));
        } else {
            return $result;
        }
    }

    function insertQuery($query) {
        $result = mysqli_query($this->conn,$query);
        if (!$result) {
            die('Invalid query: ' . mysqli_error($this->conn));
        } else {
            return $result;
        }
    }

    function deleteQuery($query) {
        $result = mysqli_query($this->conn,$query);
        if (!$result) {
            die('Invalid query: ' . mysqli_error($this->conn));
        } else {
            return $result;
        }
    }
}
?>

这是我在 search.php 中的 php 代码

    <?php
//connect to database, which I have already done
// get value from form
$query = $_GET['query'];
//compare value against sql database  
    mysql_query("SELECT * FROM products
    WHERE (`name` LIKE '%".$query."%') OR (`description` LIKE '%".$query."%')") or die(mysql_error());

//if result found  
 //   loop the below code x amount of times
//else
 //   return message item not found"


if (!empty($product_array)) { 
        foreach($product_array as $key=>$value){
//code to be looped
<div>
            <img src="<?php echo $product_array[$key]["image"]; ?>"   alt="" width=100% height="200" />
            <h4 style="font-size: 1.1vw; text-align:center"><?php echo $product_array[$key]["name"]; ?></h4>
            <p><?php echo  $product_array[$key]["description"]; ?></p>
              <p style="text-align:right"><strong><?php echo "£".$product_array[$key]["price"]; ?></strong>
                  <?php echo "  Serves ".$product_array[$key]["serves"]; ?></p>  
              <form method="post" class="form-item" action="?action=add&code=<?php echo $product_array[$key]["code"]; ?>">
            <label>QTY</label>
            <input type="text" class="product-quantity" name="quantity" value="1"/>
            <button type="submit" value="Add to Cart" id="launch-modal" >Add to Cart</button>
            </form>

 </div>
}
 }
        else{ // if there is no matching rows do following
            echo "No results";
        }

?>

就像我说的那样,我很新,并意识到有一些缺失/未实现但没有运气。

谢谢你的帮助

标签: phpmysqlsql

解决方案


我认为您错过了将查询分配给变量product_array

$product_array=mysql_query("SELECT * FROM products WHERE (名称LIKE '%".$query."%') OR (描述` LIKE '%".$query."%')") 或 die(mysql_error());

它将您的查询结果存储在$product_array


推荐阅读