我正在尝试使用node-mysql运行一个简单的查询:
client.query("UPDATE mytable SET emote='wtf?' WHERE id=5");
我收到错误
错误:给出的参数太少
因为它找到了问号并且需要参数。我怎么告诉它忽略问号!?使用\
转义它不起作用。将['?']
作为参数传递是完全不可能的 - 如果我不知道该查询包含的问号数量该怎么办?
目前,我正在使用一种解决方法来计算查询中的问号数量,并将该数量的问号作为参数传递。但是,如果我真的需要参数来实现它们的目的呢?我为这个想法而颤抖。
总结一下 - 如何告诉client.query()
忽略问号?
答案 0 :(得分:1)
答案 1 :(得分:1)
使用此:
client.query('UPDATE mytable SET emote=? WHERE id=5', ['wtf?']);
编辑:
传递['?']作为参数是完全不可能的 - 什么 如果我不知道查询包含的问号数量?
我跳过了这个。为什么你不知道查询包含多少个问号?为什么你会有一个带有问号的未知查询?
答案 2 :(得分:0)
当我尝试重新创建您的方案时,重复使用单引号会导致问题:
client.query('UPDATE mytable SET emote='wtf?' WHERE id=5');
具体来说,当我尝试启动Node实例时,我看到“SyntaxError:Unexpected identifier”。
但是,当我将外部引号切换为双引号时,我能够正常运行等效查询,如下所示:
mysql.query("SELECT * FROM stories WHERE title='Test?'");
为了比较,这是我的查询的参数化版本:
mysql.query('SELECT * FROM stories WHERE title=?',[req.params.title]);