質問

この質問に答えはこちら

いデータベース名ではなJohn Doe等残念ながらこれらの名前を含む引用符のようなKeiran O'Keefe.現しようと検索などの名称

SELECT * FROM PEOPLE WHERE SURNAME='O'Keefe' 

(夜)を取得します。

よう推奨していまこのエラーをすることを目的としている。を使用していOracle、PLSQL.

役に立ちましたか?

解決

エスケープ文字は、すで交換する必要があり、見積もりとなります

例えば、

SELECT * FROM PEOPLE WHERE SURNAME='O'Keefe'

となり

SELECT * FROM PEOPLE WHERE SURNAME='O''Keefe'

とあるんじゃないでしょうか違います。お客様の言語である機能の脱出文字列を使用アプリケーションですが、もっといいものをオプション利用パラメータ。通常、この作品としております。

おSQLコマンドすることはできない。

SELECT * FROM PEOPLE WHERE SURNAME=?

その後、実行しますパスの"O'Keefe"としてのパラメータとします。

でのSQL構文解析前のパラメータの値が設定されますが、パラメータ値変化の構造に使用するためのSQLを記述できるので少しでも早くスケジュールを設定します同じ数の異なるパラメータ

ってもらおばけの原因となるエラー、開放は是非!に多くの他の問題に逃げない文字列に適切に見 http://en.wikipedia.org/wiki/SQL_injection 用を進めていくうえで良い出発点は以下のクラシック xkcdコミック.

alt text

他のヒント

Oracle10液

SELECT * FROM PEOPLE WHERE SURNAME=q'{O'Keefe}'

パラメータ化されたクエリでは、友人とおり、マタイ

Command = SELECT * FROM PEOPLE WHERE SURNAME=?

いまからお客様を保護する目的で、頭痛に関与

  • 文字列引用符
  • 照会を豊
  • SQLインジェクション

使用のパラメータ化されたSQLはその他の特典を低減させることができCPUオーバーヘッド(その他の資源Oracle削減することにより、作業Oracleを適切に行うために必要となるための構文解析します。を使用しない場合は、パラメータとして結合する変数のsqlを"select*from foo where bar='猫"と"select*from foo where bar='dog'"として扱われ別々の諸表の場としての"select*from foo where bar=b1であり、その主なものは、意味のような書式では、有効性のオブジェクトを参照している。必要のないチェック。あの時折のことで引き起こされる問題を結合する変数には、通常マニフェストも少なくなってきている最も効率的なSQLを実行計画が回避策のためのこれらの問題の本当の述語をご利用のインデックスとデータの斜行しやすくなります。

入力フィルタリングは、通常の言語レベルよりデータベース。
php。純ても、それぞれの図書館のための脱出sql文を書きます。チェック言語、waht。
場合データの信頼性を、できるだけでな文字列置換を追加する'の前に、"逃げます。通常は十分なリスクの入力はありません。

と思い、いい質問では何語です。
PHPの使い:SELECT*from人が姓='mysql_escape_string(O'Keefe)'
っていなかった言語を指定しますことをお見逃文字列関数はmysqlまたはそのお言語です。

取引用符を使用している場合、Zend Frameworkは、コード

$db = Zend_Db_Table_Abstract::getDefaultAdapter();

$db->quoteInto('your_query_here = ?','your_value_here');

例えば;

//SELECT * FROM PEOPLE WHERE SURNAME='O'Keefe' will become
SELECT * FROM PEOPLE WHERE SURNAME='\'O\'Keefe\''

見下30代Google...

Oracle、SQL FAQ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top