2014-12-02 71 views
0

我必须使用过滤器搜索条件来帮助客户按照价格可用性和类别进行过滤。当我尝试按价格过滤时,它只显示数字,而不显示那个价格的产品。我想知道如果有人能帮助我,我做错了什么。在Dreamweaver中过滤Php查询

这是我的形式

<form action="results2.php" method="post"> 
    Name <input type="text" name="price" > 
    <input type="submit" name="search" value="Find Me"> 
</form> 

,这是我results2.php

<?php 
if (isset($_POST['search'])) { 
    $get_name = $_POST['price']; 
    echo $get_name; 
    $query = "SELECT * FROM product WHERE price LIKE '%$get_name%'"; 
    $result = mysqli_query($connection, $query); 
    while ($row = mysqli_fetch_array($result)) { 
     $productName = $row['productName']; 
     $description = $row['description']; 
     $category = $row['category']; 
     $availibilty = $row['availibilty']; 
     $price = $row['price']; 
     $height = $row['height']; 
     echo $productName . " " . $description . " " . $category . " " . $availibilty . " " . $price . " " . $height . "<br />"; 
    } 
} 
?> 

我试图通过价格时,它只是显示价格,而不是所有的产品

过滤
+0

这是什么意思,“它只显示价格而不是所有我的产品”?你得到的结果是什么,预期的结果是什么? – vaso123 2014-12-02 12:15:45

+0

它假设显示所有我的产品从我的产品表是48.00 – RandomUsers 2014-12-02 12:17:04

+0

它应该返回符合条件的产品,但我不认为'喜欢'是在这里使用的正确的操作符。其他问题,你的源代码是SQL注入漏洞! – PauloASilva 2014-12-02 12:21:04

回答

0

你必须这样做的方式是使用PDO

$dsn = 'mysql:dbname=testdb;host=127.0.0.1'; 
$user = 'dbuser'; 
$password = 'dbpass'; 

$dbh = new PDO($dsn, $user, $password); 

$stmt = $dbh->prepare(' 
    SELECT 
     * 
    FROM product 
    WHERE 
     price >= :low 
'); 

$stmt->bindParam(':low', $_POST['price']); 

$stmt->execute(); 
// you can test the return value 

while(($result = $stmt->fetch(PDO::FETCH_OBJ) !== false) 
{ 
    // output the records 
} 

我写了这个在线的话,最有可能它不会工作开箱即用,但它向您介绍PDO,预处理语句以及如何解决SQL注入攻击。

你也鼓励过滤和消毒$_POST。看看PHP filter_var函数