5

あるDBから別のDBにデータをプルするツール内で次の挿入ステートメントを使用しています。

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構文にエラーがあります。'\ n概要:\ n \ n3行目でリモートWebサーバーからファイルバックアップを取得することが可能です'の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください

列の1つから取得しようとしているデータには、一重引用符と二重引用符がたくさん含まれています(これは独自のツールから取得したものであり、データを編集できません)。問題が発生した列は、pluginTextという名前の列です。行に含まれる'と"をデータベースに無視させる方法はありますか?

mysql_real_escape_stringは、これを適切に行うために必要なものですか?

4

2 に答える 2

5

更新QUOTE()関数で実行します。

元の答え:

これを試してください:

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

または、一重引用符二重引用符が含まれている場合:

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

あなたはここでそれについてもっと読むことができます

于 2012-05-08T15:21:19.810 に答える
5

MYSQLで理解できるようにするには、関数を使用してaddslashes($text)すべての一重引用符と二重引用符、NULLなどをエスケープする必要があります。 これに関するいくつかの情報があります。

于 2016-04-21T20:31:10.773 に答える