3

次のようにnode-mysqlで簡単なクエリを実行しようとしています。

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

そして、私はエラーが発生します

エラー: 指定されたパラメータが少なすぎます

疑問符が見つかり、パラメーターが必要なためです。疑問符を無視するようにどうやって指示するのですか!? でエスケープしてもうまくいき\ません。['?']パラメーターとして渡すことはまったく問題外です。クエリに含まれる疑問符の量がわからない場合はどうすればよいでしょうか。

現在、クエリ内の疑問符の量をカウントし、その量の疑問符をパラメーターとして渡す回避策を使用しています。しかし、本来の目的のために実際にパラメーターが必要な場合はどうすればよいでしょうか? 私はその考えに震えます。

client.query()要約すると、疑問符を無視するように指示するにはどうすればよいですか?

4

3 に答える 3

2

これを使って:

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

編集:

['?'] をパラメーターとして渡すことはまったく問題外です。クエリに含まれる疑問符の量がわからない場合はどうすればよいでしょうか。

私はこれをスキップしました。クエリに含まれる疑問符の数がわからないのはなぜですか? 不明なクエリに疑問符が付いているのはなぜですか?

于 2012-02-20T13:14:00.163 に答える
1

これは未解決のバグです: #118: Client.prototype.format should not return "?" 文字列リテラル内のプレースホルダーとして

于 2012-02-20T10:52:59.350 に答える
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]);
于 2012-03-22T05:11:08.080 に答える