【问题标题】:dynamically generating an SQL statement based on user form input根据用户表单输入动态生成 SQL 语句
【发布时间】:2013-11-14 19:37:08
【问题描述】:

根据用户输入编译和构建动态 SQL 语句的最佳方法是什么。

我看到的方式是一堆 if 语句,通过使用 .length > 0 方法检查每个字段是否包含任何数据。

我不认为这是实现这一目标的最有效方式。这种疯狂还有其他方法吗?

<!DOCTYPE html>

<html>

<head>

<script type="text/javascript">
function test() {

var sql = "SELECT * FROM tbl_imts WHERE"

var date1 = document.getElementById('date1').value
var action = document.getElementById('action').value
var date2 = document.getElementById('date2').value
var reqtype = document.getElementById('reqtype').value
var status = document.getElementById('status').value
var assignto = document.getElementById('assignto').value


}
</script>
</head>
<body>
<table border="1" cellspacing="1" width="100" id="table1">
    <tr>
        <td>Date Received</td>
        <td>Action Required</td>
        <td>Due Date</td>
    </tr>
    <tr>
        <td><input type="text" id="date1"/></td>
        <td><input type="text" id="action"/></td>
        <td><input type="text" id="date2"/></td>
    </tr>
    <tr>
        <td>Request Type</td>
        <td>Status</td>
        <td>Assigned to</td>
    </tr>
    <tr>
        <td><input type="text" id="reqtype"/></td>
        <td><input type="text" id="status"/></td>
        <td><input type="text" id="assignto"/></td>
    </tr>
</table>
<br>
<input type="button" value="test it" onclick="test()"/>
</body>
</html>

【问题讨论】:

  • 出于某些明显的安全原因,切勿在您的 JAVASCRIPT 中写入任何 SQL 查询。任何人都可以修改 javascript,因为它是在客户端执行的。有人可能会修改您的查询以获取...例如用户列表和他们的密码。
  • 为此,它将是一个简单的 HTA 应用程序。这里的员工仅限于他们所知道的。让我们假设它是安全的。
  • 你在这个应用程序中使用 php 吗?
  • 我不知道 HTA 是什么意思,但如果您有任何理由关心系统的完整性,这不是做事的方式。跨度>
  • HTA 是一个 HTML 应用程序。它使用 ADODB 和 MS Access。用于跟踪工作的简单 GUI 在客户端运行。

标签: javascript


【解决方案1】:

您需要使用查询参数,否则您很容易受到 SQL 注入攻击。永远不要相信客户。任何心怀不满的员工都可能对您的数据造成严重损害。

见:How do you create a parameterized query in MS Access 2003 and use other queries/forms to fill the parameters and obtain a resultset

【讨论】:

    猜你喜欢
    • 2013-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-14
    • 2013-05-09
    • 2020-04-28
    相关资源
    最近更新 更多