javascript - mysql修改数据失败(是我的代码有问题吗)怎么解决?

查看:93
本文介绍了javascript - mysql修改数据失败(是我的代码有问题吗)怎么解决?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

使用前台数据修改数据库里面的数据总是失败
前端代码:

$.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的

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语句.
可能有些细节的地方说错了,因为我也不是太懂底层的东西:) 不过,基本就是这样啦

这篇关于javascript - mysql修改数据失败(是我的代码有问题吗)怎么解决?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆