2012-04-28 3 views
0

記事のドロップダウンを選択すると、選択したテキストがテキストボックスに入力されます。記事名に「一重引用符」がある場合を除いて、今は完璧に機能しています。次のように一重引用符が空であるクエリ

私はそれがないている、彼らの前にバックスラッシュを置くことによって、引用符をエスケープする機能を持っている...

は今、生産クエリは次のようになります。_

SELECT * FROM blogs WHERE title='MySQL \'Inject' AND series='iOS Game Dev.' AND language='iOS' LIMIT 1 

そして、私が持っています関数は、記事のオブジェクトを作成し、選択された行に従ってすべての値を設定します。私はそれがこのを与えるクエリを実行機能によって行われた配列を表示すると...

Blog Object 
(
[id] => 
[title] => 
[publish_date] => 
[author] => 
[language] => 
[series] => 
[likes] => 
[content] => 
[position] => 
[status] => 
[last_updated] => 
) 

記事名に単一引用符がない場合は動作しますが、ので、それはテキストボックスを記入していません配列は空です。

タイトルのデータベースに格納されている値以上のものは、MySQL \ 'Injectです。だから私は実際にこれを寄付する理由を知りません。私はMySQL Workbenchでクエリを実行しようとしましたが、何も返されませんでした。だから私のコードでは問題ではありません。私はかなり確信しています。

+0

代わりに '='、 'LIKE'に打撃与える使用しての:' '%のMySQL \' LIKEタイトルではなく – Nadh

+0

試し '' を注入するとスポストロフが完全に消えてしまいます。タイトルに一重引用符を付けるとどうなりますか? –

+0

@NADHの%' ' –

答えて

2

私は、エスケープについて心配することなく、変数をパラメータとして渡すための準備済みの文を使用するだけでよいことをお勧めします。

This blog articleには良いチュートリアルがあります。

+0

クエリを開発する機能を作っていれば、それは私がやったことです。それがクエリの形成方法です。 –

+0

いいえ、それは私が意味するものではありません。あなたはチュートリアルを見ましたか?その本質は、SQLステートメントにtitle/series/languageを置く代わりに、代わりにプレースホルダーを置くことです。実行のためにステートメントを「準備」し、実行すると、それらのプレースホルダーの値を指定します。 – eggyal

+0

ああ申し訳ありませんが、私は時間がありませんでしたが、私はブログを読んでいました。私はこれらの準備文が本当に好きです。今は二重引用符で行くつもりですが、ありがとう! –

関連する問題