选择查询中的变量

时间:2013-10-21 14:22:25

标签: php variables

有人可以告诉我这里有什么问题:

if (isset($_GET['preis']) AND $_GET['preis']==="0-100-euro"){
    $preis = "WHERE preis >= 0 and preis <= 100";
}
if (isset($_GET['preis']) AND $_GET['preis']==="100-200-euro"){
    $preis = "WHERE preis >= 100 and preis <= 200";
}
if (isset($_GET['preis']) AND $_GET['preis']==="200-300-euro"){
    $preis = "WHERE preis >= 200 and preis <= 300";
}
?>


$abfrage = "SELECT * FROM outfits $preis LIMIT $start, $eintraege_pro_seite";
$ergebnis = mysql_query($abfrage);

$ preis在查询中不起作用

4 个答案:

答案 0 :(得分:0)

很难说你是否给我们一个$_GET['preis']值的例子。

在你的情况下,我认为if没有被评估为真,这也可能更容易:

$preis="";
if(isset($_GET['preis'])){
    $g_preis=$_GET['preis'];
    $parts=explode('-', $g_preis);
    $preis="WHERE preis >= $parts[0] and preis <= $parts[1]";
}else{
    echo "NO query for you!";
}

答案 1 :(得分:0)

if (isset($_GET['preis']) AND $_GET['preis']==="0-100-euro"){
$preis = "WHERE preis >= 0 and preis <= 100";
}
if (isset($_GET['preis']) AND $_GET['preis']==="100-200-euro"){
$preis = "WHERE preis >= 100 and preis <= 200";
}
if (isset($_GET['preis']) AND $_GET['preis']==="200-300-euro"){
$preis = "WHERE preis >= 200 and preis <= 300";
}
?>


$abfrage = "SELECT * FROM outfits ".$preis." LIMIT $start, $eintraege_pro_seite";
$ergebnis = mysql_query($abfrage);

答案 2 :(得分:0)

请尝试以下代码

<?php
if (isset($_GET['preis']) && $_GET['preis']==="0-100-euro")
{
    $preis = "WHERE preis >= 0 and preis <= 100";
}
elseif (isset($_GET['preis']) && $_GET['preis']==="100-200-euro")
{
     $preis = "WHERE preis >= 100 and preis <= 200";
}
elseif (isset($_GET['preis']) && $_GET['preis']==="200-300-euro")
{
     $preis = "WHERE preis >= 200 and preis <= 300";
}
else
{
     $preis = "WHERE preis >= 200 and preis <= 300";
}


$abfrage = "SELECT * FROM outfits $preis LIMIT $start, $eintraege_pro_seite";  
$ergebnis = mysql_query($abfrage);
?>

始终尝试使用elseif或案例。在末尾使用else意味着如果之前的规则不匹配,则会有WHERE语句。它可能只是像这样简单,条件不符合,因此不存在$ abfrage。这将证明这一点。

答案 3 :(得分:0)

确保将所有字符串值转义为对策sql注入攻击。此外,如果丛林将使您的代码非常难以维护。

看看这个

$sPresis = (isset($_GET['preis'])) ? $_GET['preis'] : '';

$abfrage = 'SELECT * FROM outfits WHERE 1=1 ' . $this->buildWhereQuery($sPresis) .'LIMIT ' . implode(',', array($start, $eintraege_pro_seite));
$ergebnis = mysql_query($abfrage);


function buildWhereQuery($sPresis){
    $sPresis = (string) $sPresis; // mysqli escape this as well

    switch($sPresis){
        case "0-100-euro":
            return 'AND preis >= 0 AND preis <= 100';

        case "100-200-euro":
            return 'AND preis >= 100 AND preis <= 200';

        case "200-300-euro":
            return 'AND preis >= 200 AND preis <= 300';
        default:
            return '';
    }
}