1

単一のタプルをテーブルに挿入するときに文字列をエスケープするのに慣れていますが、このような挿入の場合に文字列をエスケープすることについては何も見つかりませんでした:

INSERT INTO TABLE1 SELECT * FROM TABLE2 WHERE ...

... TABLE1 と TABLE2 は同一の列を持つ必要があることを知っています (そして、それらは持っています)。しかし、私は逃げることについて確信が持てません。この挿入の場合に MySQL がどのように動作するか、必要に応じて文字列をエスケープする方法を誰か教えてもらえますか?

前もって感謝します。

4

3 に答える 3

4

示されているケースでは、データベース内で完全に作業しているため、何もエスケープする必要はありません。明らかに、データは table2 に入力されたときにエスケープする必要がありました。

于 2012-08-28T18:10:28.177 に答える
1

何も逃げないでください。準備済みステートメントをサポートするソリューション (PDO や mysqli など) を使用します。

編集

OPがPHPについて話していなかった可能性があることを認めて、私の答えを一般化して、何を使用していても、準備されたステートメントをサポートするAPIを必ず使用してください. .NET スタック、Ruby、Python、または使用するほとんどすべてのものを使用している場合は、これをサポートするすぐに使用できる API が利用できる可能性があります。

于 2012-08-28T18:09:15.390 に答える
1

INSERT INTO TABLE1 SELECT * FROM TABLE2そのままでいいです。パーツにユーザー入力があるWHERE ...場合は、慣れ親しんだ方法でそれをエスケープする必要があります。

于 2012-08-28T18:13:52.423 に答える