2

我有这个代码

$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 并确保我的表格按我想要的顺序排列?

4

2 回答 2

3

使用准备好的语句无法绑定列名。

您需要使用古老的方法将它们绑定在这样的字符串中:

$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."%") ) )
于 2013-03-23T03:18:29.410 回答
0

来自 StackoverflowPDO标签维基 - https://stackoverflow.com/tags/pdo/info

PDO 准备好的语句和标识符。

PDO 没有标识符的占位符,因此开发人员必须手动格式化它们。要正确格式化标识符,请遵循以下两条规则:

*将标识符括在反引号中。
*通过将它们加倍来逃避内部的反引号。

请参阅 - PHP PDO 语句可以接受表名或列名作为参数吗?
或者 -哪些标记可以在 PDO 准备语句中参数化?

另请参阅 php 手册中的此评论/示例 - http://us3.php.net/manual/en/book.pdo.php#69304

于 2013-03-23T03:23:59.870 回答