Проблема с переменной переменной PHP

Я пытаюсь связать переменную с моим sql-запросом в php, чтобы отсортировать таблицу в соответствии с этой переменной. Например:

if ($_GET['sort'] == 'Val'){
 $query .= " ORDER BY val";
}

Мне нужен переменный порядок сортировки, который будет объединен с этим запросом. так что я получаю отсортированный запрос в ASC или DESC. Что я делаю

$ order = ASC;

if ($_GET['sort'] == 'Val'){
 $query .= " ORDER BY val" ."$order";
}

и написать логику для

if($order==ASC){$order= DESC}

и наоборот. но он не работает. таблица не отображается. проблема с синтаксисом?

Любой может помочь в этом. ?

2 ответа

Вам нужно ввести пробел. В противном случае SQL будет читать ORDER BY valDESC

Так:

$query .= " ORDER BY val " ."$order";

Или более компактный:

$query .= " ORDER BY val $order";

Вы можете проверить, что ваш запрос как ожидается, просто распечатав его

echo $query ;

Эта простая отладка может помочь вам решить проблему


Использование:

$query .= " ORDER BY val $order";

Вам потребуется пробел между именем столбца и порядком сортировки. Ваш код генерировал:

ORDER BY valASC

Если вы просто выполнили echo $query; прежде чем пытаться выполнить его, вы наверняка видели бы это. Пожалуйста, сделайте некоторые основные, очевидные отладки перед публикацией здесь.

licensed under cc by-sa 3.0 with attribution.