2011-07-11 98 views
1

我有一个查询,我正在尝试构建,以便我可以通过汽车品牌进行过滤。但是,如果某个会话变量存在,它会要求将额外的部分添加到查询中,这基本上限制了结果到登录分支。这里的查询:MySQL Query Not Working PHP

$query_AUCTION = "SELECT * 
      FROM at_auction AS a 
      JOIN at_brands AS b ON a.aCarBrandID = b.bid 
     ORDER BY b.brand $orderx"; 

...现在这个工作,但我在哪里可以添加:

"WHERE bid = '{$bid}'"? ...or a... "AND bid = '{$bid}'"; 

它带来了一个错误。

+2

“提出错误” - 您为什么认为您应该*不*告诉我们错误是什么? –

+0

SORRY它只是一个检查你的语法错误!感谢大家的回答。 –

回答

2

插入您的where子句订单前通过

$query_AUCTION = "SELECT * FROM at_auction AS a JOIN at_brands AS b ON a.aCarBrandID = b.bid WHERE bid = '{$bid}' ORDER BY b.brand $orderx"; 
1

使用一个通用的WHERE 1 = 1,如果你想插入附加条件:

$query_AUCTION = "SELECT * 
      FROM at_auction AS a 
      JOIN at_brands AS b ON a.aCarBrandID = b.bid 
      WHERE 1=1 "; 

if ($bid > 0) 
    $query_AUCTION .= " AND bid = '{$bid}' "; 

$query_AUCTION .= " ORDER BY b.brand $orderx"; 
+0

使用WHERE 1 = 1是不好的做法。在这种情况下不需要 – DonSeba

1

试试这个:

$query_AUCTION = "SELECT * 
        FROM at_auction AS a 
        JOIN at_brands AS b ON (b.bid = a.aCarBrandID) "; 

if(isset($_SESSION['bid'])) 
{ 
    $query_AUCTION.= " WHERE b.bid = '".$_SESSION['bid']."'"; 
} 

$query_AUCTION.= " ORDER BY b.brand $orderx";