如何从mysql表中查询搜索结果?

时间:2013-12-04 15:12:42

标签: php mysql sql

我已经上传产品并且成功运作。但现在我想创建一个搜索表单,以便任何人都可以通过搜索产品标题或类别或价格来显示结果。我的表包含标题,价格,描述,类别列。

我的代码无效。我不确定如何正确地做到这一点。当我想添加更多列时它不起作用。我绝对不确定有什么不对或我应该做些什么。

以下是我的产品搜索代码:

 <?php

 // Connects to your Database 
         mysql_connect("localhost", "root", "") or die(mysql_error()) ; 
         mysql_select_db("product") or die(mysql_error()) ; 
         $search =$_POST['search'];
    $data = mysql_query("SELECT * FROM manage WHERE title or category and price= '$search' ") or die(mysql_error()); 

    //Puts it into an array 
     while($info = mysql_fetch_array( $data )) {
     //Outputs the image and other data 
     echo "<img src=http://localhost/hasem/exresze/images/".$info['photo'] ."> <br>"; Echo "<b>Title:</b> ".$info['title'] . "<br> "; Echo "<b>Description:</b> ".$info['description'] . " <br>"; Echo "<b>Category:</b> ".$info['category'] . " <hr>"; }

     ?> 

    <form action="search_product.php" method="POST">
    <input type="text" name="search">
    <input type="submit" value="Search" />
    </form>
     ?> 

我已经尝试了很多时间来通过在我的查询代码中添加更多列名但不起作用来获得结果。它只支持两列。请给我一个完美的主意,这样我就可以得到正确的方法。请不要介意我是这个领域的新手。这个查询代码工作正常

$data = mysql_query("SELECT * FROM manage WHERE title or category = '$search' ") or die(mysql_error()); 

2 个答案:

答案 0 :(得分:0)

我认为你需要这样的东西。这将搜索给定的标题或类别或价格。

您基本上需要像这样的搜索查询

SELECT 
title, price, description, category, photo 
FROM `manage` 
WHERE 
title LIKE '%$title%' OR 
price LIKE '%$price%' OR  
category LIKE '%$category%' 

您可以对此代码进行更多优化。由你来做过滤。

<?php 

 //This is the directory where images will be saved 


 //This gets all the other information from the form 
 $title=$_POST['title']; 
 $price=$_POST['price']; 

 $category=$_POST['category']; 


 // Connects to your Database 
 mysql_connect("localhost", "root", "") or die(mysql_error()) ; 
 mysql_select_db("product") or die(mysql_error()) ; 

 //Writes the information to the database 


mysql_query("SELECT title, price, description, category, photo FROM `manage` WHERE title LIKE '%$title%' OR price LIKE '%$price%' OR  category LIKE '%$category%' ") ; 
//Handle the result
 ?> 

<div id="contact">
    <h1>Add New Product.</h1>
    <form action="admin.php" method="POST">
        <fieldset>
            <label for="title">Product Title<span>*</span></label>
            <input type="text" name="title" id="name" placeholder="Enter your product title" /> 
            <label for="price">Product Price $<span>*</span></label>
            <input type="text" name="price" id="name" placeholder="Enter your product price" />         
            <label for="category">Product Category <span>*</span></label>
            <select name="category" id = "myList">
               <option value = "Cloth">Cloths</option>
               <option value = "Honda">Honda</option>
               <option value = "Book">Book</option>
               <option value = "Computer">Computer</option>
             </select>
            <input type="submit" value="Search" />
        </fieldset>
    </form>
</div>

注意:这是我从您的代码编辑的伪代码。

答案 1 :(得分:0)

据我了解,你需要这样的查询:(我在search_string中添加了描述,这是一种常见做法)。

mysql_query('SELECT * FROM `manage` WHERE `title` LIKE "%$search_string%" OR `description` LIKE "%$search_string" OR (`price`>$min_price AND `price`<$max_price') OR `category`=$category);

未经测试,但不应该难以使其正常工作。如果您想通过多个字段缩小过滤器范围,也应该使用附加逻辑执行“AND”语句。

您可能想使用mysqli,或者这不适用于php 5.5

此外,通常最好在进行数据库输入之前检查文件是否已上传,除非您想要进行记录。