У меня есть этот кусок кода:
$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'
Принцип работы с базой данных также является обязательным.
GROUP
это mysql зарезервированное слово и должен быть заключен в кавычки;
SELECT * FROM messages WHERE `group` = ...
Вы также широко открыты для внедрения SQL, вам никогда не следует добавлять не проверенные / неэкранированные данные POST в строковом формате в ваш SQL. Самый безопасный способ выполнять запросы с пользовательскими данными — использовать подготовленные операторы или — в качестве менее безопасной альтернативы — экранировать данные, используя mysqli_real_escape_string
,
$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.