Сортировка в PDO

140
24 апреля 2019, 09:50

Вообщем через PDO кидаю такой запрос:

$stmt = $pdo->prepare("SELECT * FROM `tasks` ORDER BY :order_db LIMIT :start_pos, :perpage");
$stmt->bindValue(':order_db', $order_db, PDO::PARAM_STR);
$stmt->bindValue(':start_pos', $start_pos, PDO::PARAM_INT);
$stmt->bindValue(':perpage', $perpage, PDO::PARAM_INT);
$stmt->execute();
$all_tasks = [];
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $all_tasks[] = $row;
}
return $all_tasks;

Он работает с этим всё норм, но почему-то когда в $order_db передаешь другие данные по умолчанию туда ставится login ASC, даже если туда уйдет login DESC или email DESC то при выводе все равно сортировка получается по логину. Хелп.

Answer 1

Разобрался посмотрел и решил сделать так как на мой взгляд лучше не делать, но зато работает ))

if ($order_col == 'logina' || $order_col == 'emaila' || $order_col == 'statusa') {
    $stmt = $pdo->prepare("SELECT * FROM `tasks` ORDER BY " . $order_db . " ASC LIMIT :start_pos, :perpage");
} else {
    $stmt = $pdo->prepare("SELECT * FROM `tasks` ORDER BY " . $order_db . " DESC LIMIT :start_pos, :perpage");
}
$stmt->bindValue(':start_pos', $start_pos, PDO::PARAM_INT);
$stmt->bindValue(':perpage', $perpage, PDO::PARAM_INT);
$stmt->execute();
$all_tasks = [];
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $all_tasks[] = $row;
}
return $all_tasks;
READ ALSO
composer require - изменить версию php

composer require - изменить версию php

Пытаюсь установить какие-то модули через composer

112
Как отдебажить scope?

Как отдебажить scope?

Админка на october cms

167
Не могу построить диаграмму

Не могу построить диаграмму

Есть код, который нормально работаетНо когда я выставляю приоритет WHERE pollid =3; Диаграмма не отображается

163
PHP работа с процентами

PHP работа с процентами

Не могу понять как работают в php проценты

160