2016-10-25 8 views
0

私はJSでのPostgreSQLのクエリを作成する必要があります:pgsqlのクエリ:最初の文字で引用符で値

var value = "something"; 
var query = "INSERT INTO table VALUES ('" + value + "')"; 

変数「値」以来缶は、引用符が含まれている、私も私の元のコードを変更することによって、すべての引用符を倍増:

var value = "something with quotes maybe"; 
var query = "INSERT INTO table VALUES ('" + value.replace("'", "''") + "')"; 

文字列の値が引用符で始まる場合を除いてほとんどの場合、正常に動作します。 引用符が値の最初の文字の場合は、「引用問題」を解決するにはどうすればよいですか?

答えて

1

エスケープ文字にはさらに多くのものがあります。SQL injectionを参照してください。

Javascript/Postgresライブラリによっては、使用しているSQL文字列エスケープ関数があるかもしれません。

実際の解決策は、prepared statementsを使用してこの問題を完全に解決することです。

このようなJavascript/Postgresライブラリが存在するかどうかはわかりません。ある場合でも、あなたの文はnode-postgresでかつParameterized queries and Prepared Statementsを見てみると

var value = "something with quotes maybe"; 
var sql = "INSERT INTO table VALUES (?)"; 
var stmt = conn.prepare(sql); 
stmt.execute(value); 

(これは主に、それはPHPやJavaなどの言語でどのように見えるかをモデルにして)このようなものになるだろう、これは次のようになります

var value = "something with quotes maybe"; 
var sql = "INSERT INTO table VALUES ($1)"; 
client.query(sql, [value]); 
+0

ありがとう!私は準備された文章について知りません。 うまく動作します:) – Jyah

関連する問題