【问题标题】:How to fix ER_PARSE_ERROR in node.js using express如何使用 express 修复 node.js 中的 ER_PARSE_ERROR
【发布时间】:2020-03-03 04:49:50
【问题描述】:

我正在使用 express 在 node.js 中设置一个 crud,我已经完成了创建和更新,但我仍然停留在删除功能中

我试图分析车把中的代码和 /delete 的路径,但仍然无法弄清楚为什么 user_id 无法读取

user_list_view.hbs:

<form id="add-row-form" action="/delete" method="post">
<div class="modal fade" id="DeleteModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="myModalLabel">Delete Product</h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
            </div>
            <div class="modal-body">
                <strong>Do you want to delete this data ?</strong>
            </div>
            <div class="modal-footer">
                <input type="hidden" name="user_id" class="form-control user_id" required>
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                <button type="submit" class="btn btn-success">Delete</button>
            </div>
        </div>
    </div>
</div>

user_list_view.js 中的 jquery:

<script>
$(document).ready(function () {
    $('#mytable').on('click','.delete',function(){
        var user_id = $(this).data('user_id');
        $('#DeleteModal').modal('show');
        $('.user_id').val(user_id);
    });
})

process.js:

router.post('/delete', (req,res) => {
let sql = "DELETE FROM users WHERE user_id="+req.body.user_id
let query = db.query(sql, (err, results) => {
    if (err) throw err
    res.redirect('/user_list')
 })
})


module.exports = router

我希望结果会根据 user_id 删除选定的用户,但我收到了错误消息:

code: 'ER_PARSE_ERROR',
errno: 1064,
sqlMessage: "You have an error in your SQL syntax; check the manual that 
corresponds to your MariaDB server version for the right syntax to use 
near ''at line 1",
sqlState: '42000',
index: 0,
sql: 'DELETE FROM users WHERE user_id='
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! latihan3@0.0.0 start: `node ./bin/www`
npm ERR! Exit status 1

【问题讨论】:

  • 我最好的猜测是req.body.user_id 是空白的,这就是为什么在您的错误消息中'DELETE FROM users WHERE user_id=' 缺少user_id= 的右手表达式。所以sql语句是不完整的。确保您在发布请求中传递了 user_id。
  • @marshy101 不是req.body.user_id 得到了user_id 来自input type="hidden" name="user_id" class="form-control user_id" required&gt;user_list_view.hbs 吗?
  • 是的,但是你还需要用于 express 的 body-parser 中间件。

标签: javascript mysql node.js express handlebars.js


【解决方案1】:

在 mysql 的 .query 语法中,它需要 2 个参数,但第一个是您的查询,第二个是参数,而不是回调。除非你把它包装成那样工作。

https://mariadb.com/kb/en/library/connector-nodejs-promise-api/

// DON'T HAVE TO DO THIS "DELETE FROM users WHERE user_id="+req.body.user_id

let query = db.query('DELETE FROM users WHERE user_id=,[req.body.user_id]).then(results => { if (err) throw err res.redirect('/user_list') })

【讨论】:

    猜你喜欢
    • 2020-05-22
    • 2018-05-09
    • 2021-03-26
    • 2016-05-04
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    相关资源
    最近更新 更多