2013-02-26 48 views
0

如何在我的sql语句中创建Order By?我已经尝试过这样的声明,但这不起作用。每次运行它都会崩溃。是因为我的$ _GET ['email']?我究竟做错了什么?如何在我的SQL语句中创建Order By

$results = $this->EE->db->query(
"SELECT ct.*, t.*, em.*, cd.* 
FROM transactions as t 
Inner JOIN exp_channel_titles as ct on (t.restaurant_id = ct.entry_id) 
Inner JOIN exp_channel_data as cd on (ct.entry_id = cd.entry_id) 
inner join exp_members as em on (t.cardid-10000000 = em.member_id) 
WHERE ct.title = '".$_GET['email']."'ORDER BY t.created DESC"); 
+2

有一个空间之前缺少''ORDER BY'' – fedorqui 2013-02-26 12:18:56

+1

Arrh THX @fedorqui – Zaz 2013-02-26 12:20:10

+0

谨防恶意输入,你应该sanitase你的输入或更好,但使用准备好的语句的一些国王。 – comanitza 2013-02-26 12:30:43

回答

0

如评论中所示,您在'ORDER BY'之前错过了一个空格。

WHERE ct.title = '".$_GET['email']."'ORDER BY t.created DESC"); 
            ^^^ 

WHERE ct.title = '".$_GET['email']." 'ORDER BY t.created DESC"); 
            ^^^^ 

一起:

$results = $this->EE->db->query(
"SELECT ct.*, t.*, em.*, cd.* 
FROM transactions as t 
Inner JOIN exp_channel_titles as ct on (t.restaurant_id = ct.entry_id) 
Inner JOIN exp_channel_data as cd on (ct.entry_id = cd.entry_id) 
inner join exp_members as em on (t.cardid-10000000 = em.member_id) 
WHERE ct.title = '".$_GET['email']." 'ORDER BY t.created DESC"); 
0

shoule是:

$results = $this->EE->db->query(
"SELECT ct.*, t.*, em.*, cd.* 
FROM transactions as t 
Inner JOIN exp_channel_titles as ct on (t.restaurant_id = ct.entry_id) 
Inner JOIN exp_channel_data as cd on (ct.entry_id = cd.entry_id) 
inner join exp_members as em on (t.cardid-10000000 = em.member_id) 
WHERE ct.title = '".$_GET['email']."' ORDER BY t.created DESC"); 

有空间$_GET['email']ORDER BY之间失踪。

0

使用可读性独立变量。

$email = $_GET['email']; 

$query = "SELECT 
       ct.*, 
       t.*, 
       em.*, 
       cd.* 
      FROM transactions as t 
       Inner JOIN exp_channel_titles as ct 
       on (t.restaurant_id = ct.entry_id) 
       Inner JOIN exp_channel_data as cd 
       on (ct.entry_id = cd.entry_id) 
       inner join exp_members as em 
       on (t.cardid - 10000000 = em.member_id) 
      WHERE ct.title = '$email' 
      ORDER BY t.created DESC"; 

$results = $this->EE->db->query($query);