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