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

如何通过WHERE子句将MySQL数据在Node.js的EJS模板中展示

Node.js + MySQL + EJS 结合WHERE子句展示数据

先修正你当前的代码问题

你的Node.js路由逻辑没问题,但EJS模板取值有误:MySQL的db.query返回的结果是数组格式(哪怕只查到一条数据),直接用data.id会取不到值,得通过数组下标获取第一条数据的属性。

修正后的Node.js路由(路由无需改动,仅调整EJS)

router.get("/users", (req, res) => {
    db.query('SELECT * FROM users WHERE id = 2', function (err, result) {
        if (err) throw err;
        res.render('users', {data: result});
    });
})

修正后的EJS模板

<!-- 取数组第一条数据的id -->
<input type="text" value="<%= data[0].id %>">
<!-- 同理展示用户名、邮箱 -->
<input type="text" value="<%= data[0].username %>">
<input type="text" value="<%= data[0].email %>">

扩展:动态使用WHERE子句筛选数据

实际开发中很少硬编码条件,通常从请求参数获取筛选条件,同时要注意SQL注入防护,必须用参数化查询(禁止直接拼接字符串)。

1. 按ID动态筛选(URL路径参数)

比如访问 /users/3 查看ID为3的用户:

router.get("/users/:id", (req, res) => {
    // 从URL路径获取id
    const userId = req.params.id;
    // 使用?作为占位符,第二个参数传数组形式的参数值
    db.query('SELECT * FROM users WHERE id = ?', [userId], function (err, result) {
        if (err) throw err;
        res.render('users', {data: result});
    });
})

2. 按用户名/邮箱筛选(URL查询参数)

比如访问 /users?username=Alice 或 /users?email=alice@example.com:

router.get("/users", (req, res) => {
    let query = 'SELECT * FROM users';
    let params = [];

    // 根据请求参数拼接WHERE条件
    if (req.query.username) {
        query += ' WHERE username = ?';
        params.push(req.query.username);
    } else if (req.query.email) {
        query += ' WHERE email = ?';
        params.push(req.query.email);
    }

    db.query(query, params, function (err, result) {
        if (err) throw err;
        res.render('users', {data: result});
    });
})

EJS模板处理多条结果

如果筛选结果是多条数据,用EJS循环遍历展示:

<% if (data.length > 0) { %>
    <% data.forEach(user => { %>
        <div class="user-item">
            <input type="text" value="<%= user.id %>">
            <input type="text" value="<%= user.username %>">
            <input type="text" value="<%= user.email %>">
        </div>
    <% }) %>
<% } else { %>
    <p>没有找到匹配的用户</p>
<% } %>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:15:34