0

このコードには構文の問題があります。

$query = "SELECT *
        FROM ".$db->nameQuote('#__mls')."
        WHERE 1=1"
            . if ($zip != null)
                { AND ".$db->nameQuote('MSTZIP')." = ".$db->quote($zip)."}
            . if ($city != null)
                { AND ".$db->nameQuote('MSTCITY')." = '".$db->quote($city)."'}
            . if ($bdrms != null)
                { AND ".$db->nameQuote('MSTBDRMS')." >= ".$db->quote($bdrms)."}
            . if ($bths != null)
                { AND ".$db->nameQuote('MSTBATHS')." >= ".$db->quote($bths)."}
            . if ($lprice != null)
                { AND ".$db->nameQuote('MSTLISTPRC')." BETWEEN ".$db->quote($lprice)." AND ".$db->quote($hprice)."} 
        ";"
    ;

最初の文字列"がクエリ ステートメントを開始し、2 番目"のレイヤーがテーブルを割り当てますWHERE。すべてのifステートメントは私を台無しにしています。"私はそれが間違っているか行方不明になっている場所のように感じます。

4

2 に答える 2

1

AND行方不明になるたび"に、別の方法でクエリを作成する必要があります ('どこかでいくつか見逃していると確信しているたびに再確認してください)

   $query = "SELECT *
    FROM ".$db->nameQuote('#__mls')."
     WHERE 1=1";
         if ($zip != null)
             { $query .= " AND ".$db->nameQuote('MSTZIP')." = '".$db->quote($zip)."'";}
         if ($city != null)
              {$query .= " AND ".$db->nameQuote('MSTCITY')." = '".$db->quote($city)."'";}

          if ($bdrms != null)
             {$query .= " AND ".$db->nameQuote('MSTBDRMS')." >= '".$db->quote($bdrms)."'";}
        if ($bths != null)
            {$query .= " AND ".$db->nameQuote('MSTBATHS')." >= '".$db->quote($bths)."'";}
         if ($lprice != null)
             {$query .= " AND ".$db->nameQuote('MSTLISTPRC')." BETWEEN '".$db->quote($lprice)." AND ".$db->quote($hprice).";} 

;
于 2012-12-06T15:04:39.560 に答える
1

信じられないほど完全に壊れています。このようなことをもっと試してください:

$query = "SELECT * FROM " . $db->nameQuote('#__mls') . " WHERE 1=1";
$clauses = array();
if ($zip != null) {
   $clauses[] = $db->nameQuote('MSTZIP') . " = " . $db->quote($zip);
}
if (etc...) {
   ... 
}
$query .= implode(' AND ', $clauses);
echo $query;
于 2012-12-06T15:05:25.857 に答える