SQL クエリ文字列を MySQL フィールドに格納しようとしていますが、文字列を正しくエスケープするのに問題があります。
phpMyAdmin を使用して、テスト テーブルの sql varchar フィールドに次の文字列を挿入すると:
INSERT INTO `test` SET `test`.`sql`='{$_POST['sql']}'
phpMyAdmin を使用してエクスポートすると、次の SQL クエリが返されます。
INSERT INTO `test`.`test` (`sql`)
VALUES ('INSERT INTO `test` SET `test`.`sql`=''{$_POST[''sql'']}''');
自分の php スクリプトでこれを行う場合、どの関数でエスケープしますか。
INSERT INTO `test` SET `test`.`sql`='{$_POST['sql']}'
次のようにします。
'INSERT INTO `test` SET `test`.`sql`=''{$_POST[''sql'']}'''
検索用に保存する必要がある多数の SQL クエリがあります。
作成する元の文字列に対して phpMyAdmin が行っていること:
INSERT INTO `test`.`test` (`sql`)
VALUES ('INSERT INTO `test` SET `test`.`sql`=''{$_POST[''sql'']}''');
関数 xyz は次のとおりです。
$a = "INSERT INTO `test` SET `test`.`sql`='{$_POST['sql']}'";
$b = "INSERT INTO `test`.`test` (`sql`)
VALUES ('INSERT INTO `test` SET `test`.`sql`=''{$_POST[''sql'']}''')";
$b = xyz($a);