-3

誰かがここで何が悪いのか教えてもらえますか:

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

4 に答える 4

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!";
}
于 2013-10-21T14:29:13.827 に答える
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);
于 2013-10-21T14:29:32.143 に答える
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 が存在しないという単純なことである可能性があります。これはこれを証明します。

于 2013-10-21T14:31:29.970 に答える
0

SQL インジェクション攻撃に対抗するために、すべての文字列値をエスケープしてください。また、if ジャングルによって、コードの保守が非常に困難になります。

これを見てください

$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 '';
    }
}
于 2013-10-21T14:32:13.487 に答える