{错误:ER_PARSE_ERROR:您的SQL语法有错误

时间:2019-05-15 19:49:01

标签: mysql syntax

  

{错误:ER_PARSE_ERROR:您的SQL语法有错误;校验   与您的MySQL服务器版本相对应的手册   在第1行的'undefined'附近使用的语法

我尝试在表格列中添加回勾号,但这没有用。

function quantityCheck(ID, itemsPurchased){
    connection.query('Select * FROM `products` WHERE `item_id` ' + ID, function(err, res){
        if (err){console.log(err)};
        if(itemsPurchased <= res[0].stock_quantity){
            var total = res[0].price * itemsPurchased;
            console.log('Your items are available for final purchase.')
            console.log ('Total today for ' + itemsPurchased + ' ' + res[0].product_name + ' is ' + total);

            connection.query('UPDATE products SET stock_quantity = stock_quantity -' + itemsPurchased + 'WHERE item_id = ' + ID);
        } else {
            console.log ('Your purchase could not be processed. We have limited quantities of ' + res[0].product_name);
        }
        display();
    })

我想显示quantityCheck(); connection.query方法之后的代码。

2 个答案:

答案 0 :(得分:0)

您在SQL中缺少空格

更改

connection.query('UPDATE products SET stock_quantity = stock_quantity -' + itemsPurchased + 'WHERE item_id = ' + ID);

收件人

connection.query('UPDATE products SET stock_quantity = stock_quantity -' + itemsPurchased + ' WHERE item_id = ' + ID);

注意,我在WHERE之前插入了一个空白

另外,考虑使用准备好的语句来避免SQL注入攻击

答案 1 :(得分:0)

主要是由于您的update语句中的适当间距。应该像下面这样。同样,您的查询当前容易受到 Sql Injection 攻击。改用参数化查询

connection.query('UPDATE products SET stock_quantity = stock_quantity - ' + itemsPurchased + ' WHERE item_id = ' + ID);