我想用PDO从MySQL数据库中获取结果。用户应该能够通过tablerow按哪种类型(升序或降序)对它们进行排序。这似乎只有在你硬编码时才有效。
有效吗
$query = "SELECT * FROM ".$config->dbPrefix."content
WHERE cat_id = 2
ORDER BY id DESC
";
$query = $pdo->prepare($query);
$query->execute();
$result = $query->fetchAll();
不起作用:
$orderRow = 'id'; //from $_POST
$orderType = 'DESC' //from $_POST
$query = "SELECT * FROM ".$config->dbPrefix."content
WHERE cat_id = 2
ORDER BY :orderRow :orderType
";
$query = $pdo->prepare($query);
$query->bindValue(':orderRow', $orderRow);
$query->bindValue(':orderType', $orderType);
$query->execute();
$result = $query->fetchAll();
所以我的问题是:最好的方法是什么?为什么不实施?
我能想到的最好方法是使用switch语句并为每个不同的选项编写查询,这些选项会有14种不同的可用案例。
答案 0 :(得分:1)
您只能为SQL语句中的值提供占位符,而不能为列名或其他类型的标识符提供占位符。
因此,不要使用bindValue
,而是将值与#config->dbPrefix
中的值一样直接放入字符串中。但请确保不能进行SQL注入。