SQL — запрос выбора PHP, возвращающий false

У меня есть этот кусок кода:

$result = mysqli_query($con , 'SELECT * FROM messages WHERE group = "'.$_POST['group'].'" ORDER BY date '.$_POST['order'].'');

Я не понимаю, почему это всегда возвращает меня ложным. Переменные $ _POST [‘group’] и $ _POST [‘order’] не пусты.

$_POST['group']='PHP'
$_POST['order']='DESC'

Принцип работы с базой данных также является обязательным.

0

Решение

GROUP это mysql зарезервированное слово и должен быть заключен в кавычки;

SELECT * FROM messages WHERE `group` =  ...

Вы также широко открыты для внедрения SQL, вам никогда не следует добавлять не проверенные / неэкранированные данные POST в строковом формате в ваш SQL. Самый безопасный способ выполнять запросы с пользовательскими данными — использовать подготовленные операторы или — в качестве менее безопасной альтернативы — экранировать данные, используя mysqli_real_escape_string,

0

Другие решения

$result = mysqli_query($con , "SELECT * FROM messages WHERE group = '".mysqli_real_escape_string($_POST['group'])."' ORDER BY date '".mysqli_real_escape_string($_POST['order'])."'";

Попробуйте отформатировать запрос следующим образом и посмотрите, поможет ли он вашему результату. Я также добавил mysqli_real_escape_string() чтобы избежать вашего ввода, так как ваш запрос был широко открыт для внедрения SQL.

http://php.net/manual/en/mysqli.real-escape-string.php

-1

По вопросам рекламы [email protected]