有人可以告诉我这里有什么问题:
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在查询中不起作用
答案 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 '';
}
}