【发布时间】:2021-07-29 01:25:50
【问题描述】:
我有一个使用 sqlite3 和 Node/Express 的应用程序。应用程序中有一个查询数据库的搜索栏,但是当输入 ' 或 " 时,它会使整个页面崩溃。我知道它是 SQL 中的保留字符,但是我更喜欢输入时呈现 SQL 错误消息页面而不是完全崩溃。
当在后面输入常规输入(例如香蕉)时,它不起作用并继续使页面崩溃。任何想法为什么?
截图如下:
和代码:
app.js
...
var query = "SELECT * FROM tab WHERE name = '" + req.query.name + "'"
db.all(query, (error, rows) => {
res.render(__dirname + '/views/search.ejs', {data:rows, msg:req.query.name + " is available!"})
})
...
index.html(搜索栏)
<form id="search_form" name="gs" method="get" action="search">
<div class="searchText">
<input type="text" name="name" class="searchText" id="searchText" placeholder="Enter your name here..." autocomplete="on">
</div>
<input type="submit" name="results" class="main-button" value="Search Now">
</form>
search.ejs(显示数据库输出的内容)
<span><%- msg %></span>
<h2>Check out our x</h2>
<table class="styled-table">
<thead>
<tr>
<th>x</th>
<th>y</th>
</tr>
</thead>
<% data.forEach(function(dat) { %>
<tr>
<td><%= dat.name %></td>
<td>$<%= dat.var %>/yr</td>
</tr>
<% }); %>
</table>
【问题讨论】:
标签: javascript sql node.js database