[使用mysqli和准备好的语句,我可以将列名称传递给'ORDER BY'

问题描述 投票:1回答:1

出于安全原因,我必须能够使用准备好的MYSQLI语句。

我需要能够ORDER BY COLUMNNAME DIRECTION

但是,列名和方向(ASC / DESC)一样是动态的

当我绑定mysqli参数时我得到

'COLUMNNAME''ASC'或'COLUMNNAME''DESC'

而我需要的是没有报价........

反正有这样做吗?

我见过有人在Are PHP MySQLi prepared queries with bound parameters secure?

php mysqli dynamic prepared-statement
1个回答
0
投票

无法将参数绑定用于列名或表名。您需要先正确编辑准备好的语句,然后再绑定参数。

$sortorder = empty($sortorder) ? ' ORDER BY `some_column` ASC' : $sortorder;
$preparedStatement = $pdoObject->prepare('SELECT * FROM `whereever` WHERE `some_column` = :whatever ' . $sortorder);
$preparedStatement->bindValue(':whatever', 'whatever-the-value-is');
© www.soinside.com 2019 - 2024. All rights reserved.