我有这段代码
$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并确保我的表格符合我的要求?
答案 0 :(得分: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."%") ) )
答案 1 :(得分:0)
来自Stackoverflow PDO
代码wiki - 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