我正在使用这段代码:
$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 :(得分:0)
GROUP
是mysql reserved word,需要使用反引号引用;
SELECT * FROM messages WHERE `group` = ...
您对SQL注入也很开放,您绝不应该以字符串格式将未经验证/未经过转义的POST数据添加到SQL中。使用用户数据进行查询的最安全方法是使用预准备语句,或者 - 作为不太安全的替代方法 - 使用mysqli_real_escape_string
来转义数据。
答案 1 :(得分:-1)
$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注入是开放的。