你把sql2改为这样试试。varsql2 = 'UPDATE person SET name=?,sex=?,depart=?,s1=?,s2=?,s3=?,s4=?,s5=? where id=?';
我不知道你用的什么模块连接MySQL的
connection.query($sql2,[id2, name, sex, depart, s1, s2, s3, s4, s5]
,function (err,result) {
});
回答你评论中的问题
在使用一个不熟悉的模块或者框架时,尽量先看文档,如果是英文的,看不懂也没关系
因为在里面会有例子,照着例子试试,就会有一点了解啦,然后有疑惑的地方再问
但是我看你这样这样写,猜测,query方法的第二个参数是数组,应该是替换SQL语句中的参数.一般参数在SQL语句中,都是使用?占位
所以,你这里,应该有两种执行SQL语句的方式.
第一种
var $sql2 = 'UPDATE person SET name="'+name+'",sex="'+sex+
'",depart="'+depart+'",s1="'+s1 +'",s2="'+s2+'",s3="'+s3+
'",s4="'+s4+'",s5="'+s5+'" where id='+id2;
console.log($sql2);
connection.query($sql2,function (err,result) {
});
这种方式是,直接在代码里面拼接成一条SQL语句,然后执行.这种方式,可以将SQL打印出来,直接在数据库执行(字符串需要加引号引起来,我不知道你各个字段的类型,所以全部加了引号).
这种方式是不推荐使用的,因为会有SQL注入的风险
第二种
var $sql2 = 'UPDATE person SET name=?,sex=?,depart=?,s1=?,s2=?,s3=?,s4=?,s5=? where id=?';
var params = [id2, name, sex, depart, s1, s2, s3, s4, s5];
connection.query($sql2, params, function (err,result) {
});
这种方式是,在SQL语句($sql2)中,变量使用?代替,然后将参数放入数组中(params),SQL语句($sql2)中的?数量要与数组(params)的长度一直,因为会按顺序,将问号替换为数组中的值,替换这一步是框架帮你完成的,并且会对关键字转义.避免SQL注入的风险
推荐使用这种方式执行SQL语句.
可能有些细节的地方说错了,因为我也不是太懂底层的东西:) 不过,基本就是这样啦