在处理MySQL查询值传递到EJS文件的问题时,通常涉及到后端数据获取和前端模板渲染的协同工作。以下是详细的基础概念、可能的原因、解决方案以及示例代码。
const express = require('express');
const mysql = require('mysql');
const app = express();
// 创建数据库连接
const connection = mysql.createConnection({
host: 'localhost',
user: 'your_username',
password: 'your_password',
database: 'your_database'
});
connection.connect((err) => {
if (err) throw err;
console.log('Connected to the MySQL database.');
});
app.set('view engine', 'ejs');
app.get('/', (req, res) => {
// 执行第一个查询
connection.query('SELECT * FROM table1', (err, results1) => {
if (err) throw err;
// 基于第一个查询结果执行第二个查询
const query2 = `SELECT * FROM table2 WHERE id = ${results1[0].id}`;
connection.query(query2, (err, results2) => {
if (err) throw err;
// 将两个查询结果传递给EJS模板
res.render('index', { data1: results1, data2: results2 });
});
});
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Data Display</title>
</head>
<body>
<h1>Data from Table 1</h1>
<ul>
<% data1.forEach(item => { %>
<li><%= item.name %></li>
<% }) %>
</ul>
<h1>Data from Table 2</h1>
<ul>
<% data2.forEach(item => { %>
<li><%= item.description %></li>
<% }) %>
</ul>
</body>
</html>
通过以上步骤和示例代码,你应该能够解决MySQL查询值未传递到EJS文件的问题。如果仍有疑问,请检查具体的错误信息并进行相应的调试。
领取专属 10元无门槛券
手把手带您无忧上云