2

データベースに影響を与えるアクションをログに記録するログテーブルを作成しており、sqlステートメントをdetailsというフィールドに格納しています。

以下は、ログテーブルに行を挿入しようとしたクエリの例ですが、フィールドにクエリを挿入し、mysqlがそれを実際のクエリとエラーの一部として解釈するため、詳細部分で問題が発生します。

INSERT INTO `user_log` SET `log_dts`='2012-05-28 15:07:19', `user_id`='4', `details`='UPDATE `property` SET `timedeleted` = '2012-05-28 15:07:19' WHERE `propertyid` IN (1594930)'

これをどのように処理するのが最善ですか?

ありがとう。

編集:追加するには、詳細フィールドはmysqlデータベースのテキストフィールドです。

4

3 に答える 3

1

文字列内の引用符をエスケープする必要があります。

参照:http ://dev.mysql.com/doc/refman/5.5/en/string-literals.html

于 2012-05-28T15:21:04.040 に答える
0

「'」にエスケープ文字を追加する必要があります。クエリ内の'のすべての出現箇所を\'に置き換えるだけです。

于 2012-05-28T15:20:53.763 に答える
0

mysql_real_escape_string-d'uh

于 2012-05-31T10:54:43.707 に答える