node-mysql查询尝试用我的意愿用参数替换我的问号

时间:2012-02-20 09:03:19

标签: node.js node-mysql

我正在尝试使用node-mysql运行一个简单的查询:

client.query("UPDATE mytable SET emote='wtf?' WHERE id=5");

我收到错误

  

错误:给出的参数太少

因为它找到了问号并且需要参数。我怎么告诉它忽略问号!?使用\转义它不起作用。将['?']作为参数传递是完全不可能的 - 如果我不知道该查询包含的问号数量该怎么办?

目前,我正在使用一种解决方法来计算查询中的问号数量,并将该数量的问号作为参数传递。但是,如果我真的需要参数来实现它们的目的呢?我为这个想法而颤抖。

总结一下 - 如何告诉client.query()忽略问号?

3 个答案:

答案 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]);