MySQL查询问题:指定用户名数据按id降序排列失效
问题分析与解决方案
嘿,我来帮你搞定这个问题~
首先得指出你当前代码的核心问题:你现在用的是count(user_name)聚合函数,这个查询只会返回一行结果——就是匹配user_name='$_name'的记录总数,所以你加ORDER BY id DESC完全起不到作用,因为根本没有多行数据可以排序呀!
正确的SQL写法
如果你想要显示所有user_name等于$_name的列(也就是完整的记录),并且按自增字段id降序排列,应该去掉聚合函数,直接查询你需要的字段(或者用*查询所有字段),再加上排序条件:
$query = mysqli_query($dbcon, "SELECT * FROM `viewlist` WHERE user_name='$_name' ORDER BY id DESC");
重要提醒:SQL注入风险!
直接把$_name这种用户输入拼进SQL语句里是非常危险的,很容易被SQL注入攻击。强烈建议你使用预处理语句来避免这个问题,示例代码如下:
// 初始化预处理语句 $stmt = mysqli_prepare($dbcon, "SELECT * FROM `viewlist` WHERE user_name = ? ORDER BY id DESC"); // 绑定参数("s"表示参数是字符串类型) mysqli_stmt_bind_param($stmt, "s", $_name); // 执行查询 mysqli_stmt_execute($stmt); // 获取查询结果 $result = mysqli_stmt_get_result($stmt);
这样就能安全地获取到按id降序排列的目标记录啦~
内容的提问来源于stack exchange,提问作者T. Mothy
相关产品推荐
相关产品推荐

