2012-02-03 8 views
0

IS AS のMySQL + PHP:私はこのような店のトリングに必要

member of the ruling <a href="/tets/Polish_United_Workers%27_Party" 

が、MySQLに27%がchar 'に協調されたmysqlの

にされているように、HTML文字列を格納する方法

どのように私はSQLを厳密に文字列を尊重し続けることができますか?

UPDATE

私はをJavascriptからPHPにテキスト

var string = 'member of the ruling <a href="/tets/Polish_United_Workers%27_Party"' 

を送信する(多分問題はここですか?)上のSQLクエリの

$.ajax({ 
url: myurl, 
async:false, 
data: "text="+string, 
type: "POST", 
success: function(data) {....etc... 

PARTE js呼び出しを受け取ったphpファイル

text = addslashes($_POST["text"]) 
+2

実際のコードを投稿することはできますか?それは考えられる原因を明らかにするかもしれない。 – ChrisR

+0

mySQLはこのような文字を変換しません。文字列を挿入するコードを表示します。 –

+0

あなたはおそらくそれを行うべきです。なぜなら、あなたのデータベースに挿入する前にエンコードしてから、コードが正確に同じ出力を返すからです。 – Grigor

答えて

1

使用

代わり
data: {text:string} 

とjQueryはあなたのための符号化を処理できるようにPHPのために提出する前にescape(string)を追加しました。データベースに挿入すると、を呼び出して挿入する前にSQLインジェクションに脆弱でなく、すべてが正しくエスケープされます。またはは、より最新のデータベース抽象化レイヤー(PDO)を使用します。

+1

+1。 jQueryにURLエンコーディングをさせ、(mysqliを使用して)パラメータ化されたクエリがSQLエンコーディングを処理するようにします。エスケープするのは難しいので、通常はあなたから離れてエスケープする責任を負うインターフェースを使用する方が良いでしょう。例えば、JSの 'escape()'はURLエンコーディングには絶対に間違っていて、 'addslashes()'はSQLエンコーディングには間違っています。 – bobince

+0

大変感謝しています... – Francesco

+0

文字列が "text = string&time = data"などのような長いクエリの一部である場合はどうでしょうか? – Francesco

0

私の悪いが、私はそれを見落としはいソリューションは

arrrhggg

+1

は、より互換性のある 'encodeURIComponent'を使用します。 –

+0

右!! ........ – Francesco

関連する問題