Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Javascript动态创建sqlselect请求,然后使用Ajax执行它_Javascript_Mysql_Ajax - Fatal编程技术网

如何使用Javascript动态创建sqlselect请求,然后使用Ajax执行它

如何使用Javascript动态创建sqlselect请求,然后使用Ajax执行它,javascript,mysql,ajax,Javascript,Mysql,Ajax,这就是我的问题: 我需要通过复选框应用的过滤器从我的数据库(MySQL)获取信息 作为一个约束,我必须在javascript中执行,然后使用Ajax执行请求 它本来可以通过无线电输入,但由于它是复选框,我无法预先确定我的用户在获得他们想要的信息时会有多少个过滤器 我正在考虑创建一个字符串,它将是我需要的过滤器的串联,但我不确定这是否是良好的做法,也不确定它是否会违反安全性:((这对该项目肯定不好) 下面是我想做的一个例子: [ ] a [x] b [ ] c 那么我的SQL请求应该是: SEL

这就是我的问题:

我需要通过复选框应用的过滤器从我的数据库(MySQL)获取信息

作为一个约束,我必须在javascript中执行,然后使用Ajax执行请求

它本来可以通过无线电输入,但由于它是复选框,我无法预先确定我的用户在获得他们想要的信息时会有多少个过滤器

我正在考虑创建一个字符串,它将是我需要的过滤器的串联,但我不确定这是否是良好的做法,也不确定它是否会违反安全性:((这对该项目肯定不好)

下面是我想做的一个例子:

[ ] a [x] b [ ] c
那么我的SQL请求应该是:

SELECT 'column' FROM 'table' WHERE 'id' = b
SELECT 'column' FROM 'table' WHERE 'id' = a OR 'id' = c
在这种情况下

[x] a [ ] b [x] c
那么我的SQL请求应该是:

SELECT 'column' FROM 'table' WHERE 'id' = b
SELECT 'column' FROM 'table' WHERE 'id' = a OR 'id' = c
我希望这能帮助你理解我在找什么

如果您需要更多信息,请不要犹豫


提前感谢=)

不要在客户端构建SQL查询。这意味着您的数据库将对任何人运行任意查询开放。恶意用户可能会欺骗浏览器发送,例如,从用户处选择密码(如果DB用户具有写入权限,则更糟)

相反,您应该将查询参数作为普通URL参数发送到服务器。比如说,

GET/query?a=true&b=false&c=true

您的服务器应该提取参数,验证它们(以便只接受已知参数和这些参数的有效值),并使用经验证的查询构建库或SQL,使用正确转义的输入构建一个安全的SQL查询

如何做到这一点取决于服务器软件使用的平台。例如,在Node.js中:

connection.query('SELECT * FROM table WHERE a = ? AND b = ? AND c = ?', [validatedA, validatedB, validatedC], function(err, results) {
  // ...
});
mysql
库负责正确转义参数以防止错误

后端平台的MySQL库将具有类似的功能


还有许多其他问题涉及到这个问题。例如(关于PHP,但建议适用于任何平台):和。

不要在客户端构建SQL查询。这意味着您的数据库将对任何人运行任意查询开放。恶意用户可能会欺骗浏览器发送,例如,从用户处选择密码(如果DB用户具有写入权限,则更糟)

相反,您应该将查询参数作为普通URL参数发送到服务器。比如说,

GET/query?a=true&b=false&c=true

您的服务器应该提取参数,验证它们(以便只接受已知参数和这些参数的有效值),并使用经验证的查询构建库或SQL,使用正确转义的输入构建一个安全的SQL查询

如何做到这一点取决于服务器软件使用的平台。例如,在Node.js中:

connection.query('SELECT * FROM table WHERE a = ? AND b = ? AND c = ?', [validatedA, validatedB, validatedC], function(err, results) {
  // ...
});
mysql
库负责正确转义参数以防止错误

后端平台的MySQL库将具有类似的功能


还有许多其他问题涉及到这个问题。例如(都是关于PHP的,但建议适用于任何平台):和。

永远不要在客户端构建SQL查询。这意味着您的数据库将对任何人运行任意查询开放。恶意用户可能会欺骗浏览器发送,例如,
从用户选择密码
(如果DB用户具有写入权限,则更糟)。这正是我所担心的:/谢谢您的回答。那么,我应该如何将过滤器放入服务器呢?永远不要在客户端构建SQL查询。这意味着您的数据库将对任何人运行任意查询开放。恶意用户可能会欺骗浏览器发送,例如,
从用户选择密码
(如果DB用户具有写入权限,则更糟)。这正是我所担心的:/谢谢您的回答。那么,我应该如何将我的过滤器放入服务器呢?非常感谢您的清晰解释和帮助,请允许我将此标记为已回答然后=)非常感谢您的清晰解释和帮助,请允许我将此标记为已回答然后=)