【发布时间】:2020-03-18 23:00:15
【问题描述】:
我有这个方法
public function getArticles($order){
$stmt = $this->db->prepare("SELECT * FROM articles ORDER BY :order");
$stmt->bindParam('order',$order);
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $results;
}
我是这样打电话的
$articles->getArticles('created DESC');
但是当我尝试执行“创建 ASC”时,它不会更改顺序吗?
我尝试使用两个 $vars 并在列周围使用 backtics,但我无法让它工作,而且我没有遇到任何错误,它只是每次都以相同的顺序拉动行。
在https://phpdelusions.net/pdo找到解决方案
$orders = ["name","price","qty"];
$key = array_search($_GET['sort'], $orders);
$orderby = $orders[$key];
$direction = _GET['direction'] == 'DESC' ? 'DESC' : 'ASC';
$query = "SELECT * FROM `table` ORDER BY $orderby $direction";
【问题讨论】:
-
为什么这被标记为“mysqli”和“pdo”?这是两种不同的动物。
-
这显然是 PDO.. 我删除了 mysqli 标签。
-
那将是“两者”。 @FelippeDuarte 用来标记它的那个,也是我选择的那个。