2012-05-08 8 views
2

DB内のデータを別のDBにプルするツール内で次の挿入文を使用しています。MySQLは構文エラーを示す一重引用符と二重引用符を含むデータを挿入します

INSERT INTO act_vulnerabilities_internal_test (device_type, ip_address, user_tag,  
repositoryID, severity, pluginID, pluginName, pluginText) 

VALUES ("@Data.device_type~", "@Data.ip_address~", "@Data.user_tag~",  
"@Data.repositoryID~", "@Data.severity~", "@Data.pluginID~", "@Data.pluginName~", 
@Data.pluginText~) 

エラーメッセージ:SQL構文に誤りがあります。あなたのMySQLサーバのバージョンに対応するマニュアルを調べて、正しい構文を\ nシノプシスで使用するようにしてください。\ n \ n 3行目のリモートWebサーバからファイルバックアップを取得することができます。

私が試しているデータ1つの列からの引っ張りには、一重引用符と二重引用符が多く含まれています(これは独自のツールから取得したものであり、データを編集できません)。私に問題を与える列は、pluginTextという名前の列です。

は、私はこれを適切に行うために必要なものmysql_real_escape_stringのデシベルは 'と "行に含まれる無視させる方法がある

答えて

3

更新:??QUOTE() functionでそれを行う

オリジナルの答え:

これを試してください:

INSERT INTO 
... 
VALUES (
... 
, REPLACE(@Data.pluginText, '"', '\"') 
) 

またはあなたはそれで一つの二重引用符がある場合:

INSERT INTO 
... 
VALUES (
... 
, REPLACE(REPLACE(@Data.pluginText, '"', '\"'), "'", "\'") 
) 

あなたはそれがhere

+0

私は両方を試してみましたが、同様のエラーが表示されます。SQL構文にエラーがあります。 \ n \ nCVE:CVE-99、 '行3にある「Thorough tests」の近くで使用する正しい構文が有効になっていないことをMySQLサーバのバージョンに対応するマニュアルで確認してください。 \\と:記号? – Ben

+0

@ user1208132問題の原因となっているテキストを教えて、少しでもテストすることはできますか? – fancyPants

+0

ここでは、これは正確にどのようにフォーマットされていて、 " \ n \ nCVE:CVE-2012-2100、 – Ben

2

我々はすべての単一引用符と二重引用符をエスケープするaddslashes($text)機能を使用する必要がありますについての詳細を読むことができ、NULLをそれをMYSQLで理解できるようにします。 Here is some information on that.

関連する問題