You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ExpressJS与MySQL2开发API,如何统计MySQL查询结果条数?

首先注意你的代码有严重的SQL注入风险,绝对不能直接把用户输入拼接到SQL语句里,必须用mysql2的参数化查询来处理。

下面给你两种统计查询结果条数的实现方法:

方法1:让数据库直接返回统计数(效率更高)

直接修改SQL语句,用COUNT(*)统计符合条件的记录数,不需要查询全部字段,数据库处理更快,返回的数据量也更小:

app.get('/:token/checkUser/:username', function(req, res) {
    // 使用?作为占位符,避免SQL注入
    db.query('SELECT COUNT(*) AS user_count FROM users WHERE user_username LIKE ?', [req.params.username], function(err, result) {
        if (err) {
            console.error(err);
            return res.status(500).send('服务器错误');
        }
        // mysql2返回的result是数组,取第一个元素的user_count字段
        const count = result[0].user_count;
        res.send({ userExists: count > 0, count: count });
    })
})

方法2:查询全部结果后统计条数

如果你需要同时获取用户的详细数据,再统计条数,可以直接用返回结果数组的length属性:

app.get('/:token/checkUser/:username', function(req, res) {
    db.query('SELECT * FROM users WHERE user_username LIKE ?', [req.params.username], function(err, result) {
        if (err) {
            console.error(err);
            return res.status(500).send('服务器错误');
        }
        // result是查询到的用户数组,length就是结果条数
        const count = result.length;
        res.send({ userList: result, count: count });
    })
})

补充说明:如果你的查询语句加了LIMIT限制返回条数,方法2的length是实际返回的条数,而方法1的COUNT(*)会返回符合条件的总记录数(不受LIMIT影响),可以根据你的需求选择。

内容的提问来源于stack exchange,提问作者ambroiselebs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 00:40:36