2014-06-15 70 views
-1

我有一个4表合并进行,最后我希望它根据某个变量按“ORDER BY”排序。现在这总是返回相同的条目顺序。MYSQL Order By column_name与许多表左连接

喜欢的东西:

if(isset($_GET['filter'])){ 
    $filter = $_GET['filter']; 
#Example $filter = 'date' or team or game_num 

    $q = $db->prepare("SELECT g.game_num, s.date, t.team 
           FROM schedule n 
           LEFT JOIN g_lkp g 
           ON n.game_num = g.game_num 
           LEFT JOIN dates s 
           ON n.date = s.date 
           LEFT JOIN teams t 
           ON n.home_team_nbr = t.team         
           ORDER BY '$filter' "); 
$q->execute(); 
$qR = $q->fetchAll(PDO::FETCH_ASSOC); 
if ($q->rowCount() > 0) { 
    foreach ($qR as $row) { 
     echo ' 
+0

为什么你逝去$ fileter在'为了by'作为一个字符串?它不应该是不变的 - 它应该是这样的:'g.game_num,s.date'命令。 –

+0

它会通过页面请求进入,如/php/page.php?filter=date – user3697407

+1

将GET参数放入您的SQL语句也是一个坏主意 - 它是直接获取SQL注入漏洞的方法 –

回答

1
//First check value of $filter 
$q = $db->prepare("SELECT g.game_num game_num, s.date date, t.team team 
          FROM schedule n 
          LEFT JOIN g_lkp g 
          ON n.game_num = g.game_num 
          LEFT JOIN dates s 
          ON n.date = s.date 
          LEFT JOIN teams t 
          ON n.home_team_nbr = t.team         
          ORDER BY $filter ");