2011-12-28 19 views
1

PHPのテキストボックスからデータを取得し、通常の挿入コマンドでMySQLデータベースに挿入しています。テキストボックスは、テキストボックスの隣にある特定のアクセッションIDのコメントをユーザーに表示します。問題は、ユーザーがアポストロフィ( ')で「PCの世話をしなければならない」という文を入力すると、エラーがスローされることです。挿入中のアポストロフィ(Mysql)

私はSQLがその値の文字列の終わりと見なすが、それをエスケープする方法はわからないので、なぜ起こっているのか知っている。私はMYSQLでそれをエスケープすることを好むでしょう。

私がMySQLでエスケープしても、エラーが生成されずに正常に動作してもSQLインジェクションとして悪用される可能性がありますか?

+0

パラメータを使用する必要があります。 – SLaks

+0

MySQLiプリペアドステートメントの使用 –

答えて

6

を使用するか、いっそのこと、PDOでパラメータ化クエリを使用します。

+0

PHPではなくMySQLでエスケープしたい場合はどうすればいいですか? – Ank

+0

@Ankur:クエリのコンテキストでエスケープしています。 MySQL *でそれをエスケープすることはできません。その時までに、それは遅すぎます。 – alex

+0

またはMySQLで置換え( '' '、' ')することはできますか?アポストロフィが文字列にないかどうかは気にしません。 – Ank

0

ステートメントを使用してください。

特別な作業をせずに簡単に特殊文字を渡すことができます。

読み取りMySQLi prepared statements.