2013-03-23 101 views
2

我有這樣的代碼PDO與LEFT JOIN和ORDER BY

$query_search = $this->db->prepare("SELECT* FROM table1 LEFT JOIN table2 ON (table1.id=table2.id) WHERE table1.nome LIKE ? ORDER BY ? DESC"); 
if($query_search->execute(array($cliente_procura."%",'table2.'.$ordem))) 
{ 
    //code 
} 

,但我有一些問題ORDER BY條款。 如何使用PDO並確保我的表格符合我的要求?

+2

什麼問題你得到?任何錯誤? – 2013-03-23 03:10:02

+0

您不能像這樣綁定字段名稱。 – hjpotter92 2013-03-23 03:13:59

回答

2

使用預處理語句無法綁定列名稱。

您需要使用像這樣的字符串結合他們古老的方法:

$query_search = $this->db->prepare(" SELECT * 
     FROM table1 
     LEFT JOIN table2 
      ON (table1.id=table2.id) 
     WHERE table1.nome 
     LIKE ? 
     ORDER BY table2." . $ordem . " DESC"); 
if($query_search->execute(array($cliente_procura."%"))) 
0

從#1 PDO標籤維基 - https://stackoverflow.com/tags/pdo/info

PDO預處理語句和標識符。

PDO沒有標識符的佔位符,因此開發人員必須手動將它們格式化爲 。要正確格式化標識符,請遵循以下兩條規則:

*在反引號中包含標識符。 *通過將它們加倍來逃避反向內部。

看到的 - Can PHP PDO Statements accept the table or column name as parameter?
或 - Which tokens can be parameterized in PDO prepared statements?

也看到從PHP手冊此評論/例子 - http://us3.php.net/manual/en/book.pdo.php#69304