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です。だから、なぜこれを提供しているのか本当にわかりません。MySQLWorkbenchでクエリを実行しようとしても、何も返されませんでした。ですから、私のコードでは問題ではないと確信しています。

4

1 に答える 1

2

エスケープについて心配する手間を省き、変数をパラメーターとして渡す準備済みステートメントを使用することをお勧めします。

このブログ記事 には、優れたチュートリアルがあります。

于 2012-04-28T18:26:22.553 に答える