у меня есть этот метод
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? Это два разных животных. — person nicolai olsen schedule 23.11.2019
Это явно PDO. Я удалил тег mysqli. — person nicolai olsen schedule 23.11.2019
Это было бы и то, и другое. Тот, который @FelippeDuarte использовал, чтобы пометить его, и тот, который я выбрал. — person nicolai olsen schedule 23.11.2019
Ваш запрос использует переменную связывания для имени столбца. Вы не можете этого сделать.
Имена столбцов, в том числе в предложениях
ORDER BY
, должны быть указаны как часть текста запроса.спасибо за совет, я погуглил и нашел правильный путь на phpdelusions.net/pdo. — person nicolai olsen; 23.11.2019