Php сортировка заголовка SQL запрос
У меня есть приведенный ниже код, но запрос mysql продолжает выдавать ошибку, я пытаюсь использовать столбец заголовка для сортировки по возрастанию/убыванию, но не работает.
Дает следующее сообщение:
У вас есть ошибка в синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с " в строке 1
любая помощь была бы очень кстати.
Что я уже пробовал:
<pre lang="PHP"> <pre>function process() { global $DatabaseServer, $DatabaseUser, $DatabasePswd, $DatabaseName, $AgentPin; $cn=mysqli_connect($DatabaseServer, $DatabaseUser, $DatabasePswd, $DatabaseName); $sql = "SELECT pin.username, pendingindex.* FROM pin join sorttest ON pin.AgentID = sorttest.AgentID join pendingindex ON sorttest.pendreckey = pendingindex.pendreckey ORDER BY" . $sort . " " . $sort_order; // sets id as default sort (you can set something else than id) $sort = (isset($_GET['sort'])) ? $_GET['sort'] : 'pendreckey'; // define sort order $sort_order = 'asc'; if(isset($_GET['sort_by'])) { if($_GET['sort_by'] == 'asc') { $sort_order = 'desc'; } else { $sort_order = 'asc'; } } // query table $query = mysqli_query($cn,$sql) or die(mysqli_error($cn)); $keys = mysqli_fetch_array($query, MYSQLI_ASSOC); // html table echo "<table border='1'>"; // print out table columns echo "<tr>"; foreach(array_keys($keys) as $key) { switch($sort) { case $key : $order_by = $key; break; } if($sort==$key) { echo "<td bgcolor=white><a href='?sort=$key&sort_by=" . $sort_order . "'>$key</a></td>"; } else { echo "<td bgcolor=white><a href='?sort=$key&sort_by=" . $sort_order . "'>$key</a></td>"; } } echo "</tr>"; // print out table contents $query = mysqli_query($cn,$sql); while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)) { echo "<tr>"; foreach($row as $rows) { echo "<td>" . $rows . "</td>"; } echo "</tr>"; } echo "</table>"; echo '<br><br><br>'; }
Richard Deeming
YourPage.php?sort=%20pendreckey;DELETE%20FROM%20pin;--
Ваш код уязвим для SQL-инъекция[^].
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
PHP: SQL-инъекция - руководство пользователя[^]
К сожалению, вы не можете указать порядок сортировки в параметре. Вместо этого вам нужно будет убедиться, что
$sort
значение-это точное совпадение допустимого выражения сортировки перед добавлением его в запрос.Вам также не хватает пространства между ними
ORDER BY
и колонка сортировки.