我在用 nodejs 10.26
+ express 3.5
+ node-mysql 2.1.1
+ MySQL-Server Version: 5.6.16
.
我得到了4个delete,只需要1个数据库请求,所以我用“;”连接了delete命令。。。但总是失败。
var sql_string = "DELETE FROM user_tables WHERE name = 'Testbase';";
sql_string += "DELETE FROM user_tables_structure WHERE parent_table_name = 'Testbase';";
sql_string += "DELETE FROM user_tables_rules WHERE parent_table_name = 'Testbase';";
sql_string += "DELETE FROM user_tables_columns WHERE parent_table_name = 'Testbase';";
connection.query(sql_string, function(err, rows, fields) {
if (err) throw err;
res.send('true');
});
它抛出以下错误:
Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELETE FROM user_tables_structure WHERE parent_table_name = 'Testbase';DELETE FR' at line 1
但是如果我在phpmyadmin中粘贴这个sql,它总是成功的。。。
如果我在单个查询中编写它,它也会成功。
connection.query("DELETE FROM user_tables WHERE name = 'Testbase'", function(err, rows, fields) {
if (err) throw err;
connection.query("DELETE FROM user_tables_structure WHERE parent_table_name = 'Testbase'", function(err, rows, fields) {
if (err) throw err;
connection.query("DELETE FROM user_tables_rules WHERE parent_table_name = 'Testbase'", function(err, rows, fields) {
if (err) throw err;
connection.query("DELETE FROM user_tables_columns WHERE parent_table_name = 'Testbase'", function(err, rows, fields) {
if (err) throw err;
res.send('true');
});
});
});
});
谢谢你的帮助!
1条答案
按热度按时间jvidinwx1#
我猜您使用的是节点mysql(但也适用于node-mysql2)
医生说:
出于安全原因,禁用了对多个语句的支持(如果值未正确转义,则允许sql注入攻击)。
多语句查询
要使用此功能,您必须为您的连接启用它:
一旦启用,您就可以通过使用分号分隔每条语句来使用多条语句执行查询
;
. 结果将是每个语句的一个数组。示例
因此,如果您已启用
multipleStatements
,您的第一个代码应该可以工作。