按品牌循环过滤

时间:2013-07-17 10:52:52

标签: php

我正在建立一个在线商店,我需要从数据库中按品牌过滤结果。我怎样才能创建一个循环来遍历所有品牌,因为它们不仅仅是三个。 这是代码:

$sortby = $_GET['sortby'];
if(!$sortby) { $sortby = 'name'; }

if($sortby == 'Brand1') 
{
    $sort_query = "WHERE category = 'Brand1";
}
else if($sortby == 'Brand2')
{
    $sort_query = "WHERE category = 'Brand2'";
}
else if($sortby == 'Brand3')
{
    $sort_query = "WHERE category = 'Brand3'";
}
else if($sortby == 'name')
{
    $sort_query = "";
}
else { unset($sortby); }

if($sortby)
{
    $select[$sortby] = 'selected';
}
$sql = mysql_query("SELECT * FROM products $sort_query");

5 个答案:

答案 0 :(得分:0)

试试这个:

$sortby = mysql_real_escape_string($_GET['sortby']) or $sortby = "name";

if($sortby != "name") {
    $sort_query = "WHERE category = '$sortby'";
    $select[$sortby] = 'selected';
} else {
    $sort_query = "";
}

$sql = mysql_query("SELECT * FROM products $sort_query");

答案 1 :(得分:0)

这样的事情:

$sortby = $_GET['sortby'];
if(!$sortby) {
    $sort_query = "";
} else {
    $sort_query = "WHERE category = '".mysql_real_escape_string($sortby)."'";
}
$sql = mysql_query("SELECT * FROM products $sort_query");

记住:永远不要相信用户!总是逃避用户输入!

此外,使用mysql-prefixed函数已过时。您应该检查如何使用mysqli。

答案 2 :(得分:0)

我会写这样的代码:

$sortby = $_GET['sortby'];
$valid_brands = array('brand1','brand2');


if(in_array($sortby, $valid_brands)){
    $sql = "SELECT * FROM products where category = ?";
    $stmt = $db_usag->prepare($sql);
    $stmt->bind_param($sortby);
}
else{
    $sql = "SELECT * FROM products";
    $stmt = $db_usag->prepare($sql);
}

$stmt->execute();

$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    // do something with $row
}

这是一个伪代码..但是没有注入问题的干净代码:)

答案 3 :(得分:-1)

  1. 很简单。为什么写代码这么难? php是动态的。
  2. 要排序,您必须使用ORDER BY,要过滤..
  3. 这里的示例,变量名称我没有改变。 这只是查询建立声明。

    $sortby = $_GET['sortby'];
    $sort_query = $sortby == 'name' ? "" : "WHERE category = '{$sortby}'";
    $sql = mysql_query("SELECT * FROM products {$sort_query}");
    

答案 4 :(得分:-1)

您应该从数据库中选择所有可用的品牌,然后循环浏览它们。

$sql = "SELECT DISTINCT `category` FROM products"
[mysql stuff]
while($cat = [assoc array]) /*use your prefered functions*/
{
    if($sortby == $cat['category']) 
    {
        $sort_query = "WHERE category = '".$cat['category']."'";
    } 
}