我试图像这样使用节点-mysql运行一个简单的查询:
client.query("UPDATE mytable SET emote='wtf?' WHERE id=5");我得到了错误
错误:给定的参数太少
因为它找到了问号并期望参数。我怎么能让它无视这个问号!?用\逃避它不起作用。将['?']作为参数传递是完全不可能的--如果我不知道查询包含多少问号怎么办?
目前,我正在使用一种计算查询中问号数量并将该数量的问号作为参数传递的解决方案。但如果我真的需要这些参数来做什么呢?一想到这个,我就发抖。
因此,总结一下--我如何告诉client.query()忽略问号?
发布于 2012-02-20 10:52:59
发布于 2012-02-20 13:14:00
用这个:
client.query('UPDATE mytable SET emote=? WHERE id=5', ['wtf?']);编辑:
经过“?”由于参数是完全不可能的-如果我不知道查询包含多少问号怎么办?
我跳过了这个。为什么不知道查询包含多少问号?为什么会有一个带有问号的未知查询?
发布于 2012-03-22 05:11:08
当我试图重新创建您的场景时,重复使用单引号会导致一个问题:
client.query('UPDATE mytable SET emote='wtf?' WHERE id=5');具体来说,当我试图启动Node实例时,我看到了"SyntaxError:意外标识符“。
但是,当我将外部引号转换为双引号时,我可以运行一个等价的查询,如下所示:
mysql.query("SELECT * FROM stories WHERE title='Test?'");比较而言,这是我的查询的参数化版本:
mysql.query('SELECT * FROM stories WHERE title=?',[req.params.title]);https://stackoverflow.com/questions/9358451
复制相似问题