PHP select查询返回false

时间:2014-09-30 17:47:41

标签: php sql return

我正在使用这段代码:

$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'

对数据库的连接也是核心。

2 个答案:

答案 0 :(得分:0)

GROUPmysql 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注入是开放的。

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