-1

在 php 中,我有一个 mysql 查询,如果传递的值不为空,则该查询应该只包含 where 子句。

不幸的是,mysql似乎不起作用。你能告诉我我做错了什么吗?

if (isset($_GET['q'])) 
                {
                $q =  $_GET['q'];

                }
else
                $q ="";



$query = mysql_query("Select q1.Umsatz, kundendatenbank.Kundenname from

(SELECT sum(rechnung.Betrag) as Umsatz, kundendatenbank.Hauptname 
fROM auftrag
JOIN rechnung ON rechnung.Auftragsnummer = auftrag.Auftragsnummer
JOIN kundendatenbank ON auftrag.Kundennummer=kundendatenbank.Kundennummer

JOIN auftrag_ma on auftrag.Auftragsnummer=auftrag_ma.Auftragsnummer";

if ($q!="")
        $query =  $query." where Quarter(auftrag_ma.Datum)='$q'";


$query = $query."group by kundendatenbank.Hauptname)q1
join kundendatenbank on q1.Hauptname=kundendatenbank.Kundennummer");
4

2 回答 2

1
  1. 完全定义后运行查询。函数调用中不能有if语句。
  2. 转义 $q 参数以保护自己免受 SQL 注入。我做了if语句。
  3. mysql_* 函数已弃用,请考虑切换到 PDO 或 mysqli。

代码

$query = "Select q1.Umsatz, kundendatenbank.Kundenname from

(SELECT sum(rechnung.Betrag) as Umsatz, kundendatenbank.Hauptname 
FROM auftrag
JOIN rechnung ON rechnung.Auftragsnummer = auftrag.Auftragsnummer
JOIN kundendatenbank ON auftrag.Kundennummer=kundendatenbank.Kundennummer
JOIN auftrag_ma ON auftrag.Auftragsnummer=auftrag_ma.Auftragsnummer";

if ($q != "")
{
   $q = mysql_real_escape_string($q);
   $query =  $query." where Quarter(auftrag_ma.Datum)='$q'";
}


$query = $query." GROUP BY kundendatenbank.Hauptname) q1
join kundendatenbank on q1.Hauptname=kundendatenbank.Kundennummer";

$result = mysql_query($query);
于 2013-07-28T15:15:07.143 回答
0

实际上你所要做的就是它应该工作。如果没有选择任何内容而不会弄乱您的查询,则 where 将保持空白。

    if (isset($_GET['q'])) 
            {
            $q =  $_GET['q'];
            $whereclause = "WHERE <insert your table.columnname> = '".$q ."'";

            }
    else {
            $whereclause = "";
    }


    $query = mysql_query("Select q1.Umsatz, kundendatenbank.Kundenname from

    (SELECT sum(rechnung.Betrag) as Umsatz, kundendatenbank.Hauptname 
    FROM auftrag
    JOIN rechnung ON rechnung.Auftragsnummer = auftrag.Auftragsnummer
    JOIN kundendatenbank ON auftrag.Kundennummer=kundendatenbank.Kundennummer

    JOIN auftrag_ma on auftrag.Auftragsnummer=auftrag_ma.Auftragsnummer $whereclause";       


    $query = $query."group by kundendatenbank.Hauptname)q1
    join kundendatenbank on q1.Hauptname=kundendatenbank.Kundennummer");
于 2013-07-28T15:44:45.290 回答