mysql在where情况下会报错

var userdetail = {
    insertone:'insert into userdetail(id, name, article, des) values('+`${bb++}`+',?,?,?)',
    getDetail:'select * from userdetail'
};

图片描述
getDetail中在没有where的情况下会返回result,但是在加上where的情况下会报错

let bb = 0
var userdetail = {
    insertone:'insert into userdetail(id, name, article, des) values('+`${bb++}`+',?,?,?)',
    getDetail:'select * from userdetail where name = ?'
};
module.exports = userdetail;

图片描述

阅读 2.4k
2 个回答

建议把sql语句和参数都打印出来。代码中我看到可能有问题的是,参数需要使用数组传递。改成下面试试看:

connection.query(userdetail.getDetail,[params.name],(err1,result) => {
})

这是Navicat for MySQL自动生成的

CREATE TABLE `userdetail` (
     `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(255) NOT NULL,
      `article` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
      `des` varchar(255) NOT NULL,
      PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

#下面是express中的代码

router.get('/info', (req,res) => {
let params = req.body;
pool1.getConnection((err,connection) => {
    if(err){
        reject (err)
    }
    connection.query(userdetail.getDetail,params.name,(err1,result) => {
        if(err1)
        {
            throw err1
        }
        else{
            if(result.length == 0){
                res.send({
                    status: '4',
                    msg: '尚无文章发表'
                });
                res.end();
            }
            else{
                res.json(result);
                res.end();
            }
        }
    })
})

})

#下面是vue中的请求代码

queryArticle () {
  let data = {
    name: 'xiaobai'
  }
  axios.get('http://localhost:3000/userdetail/info', data)
    .then((res) => {
      console.log(res)
    })
    .catch((err) => {
      console.log(err)
    })
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题