0

アプリケーションが特殊文字を処理できるかどうかを確認するためにテストを行ったところです。

PHP フォームでは、次のように MySQL にデータを追加します。

"test"| | 'test'| | " £ $ % ^ & * ( )| |'test' "test"

データはエスケープされており、MySQL では次のようになります。

\\\"test\\\"| | \\\'test\\\'| | ! \\\" £ $ % ^ & * ( )| |\\\'test\\\' \\\"test\\\"

それは次のような JSON になります。

[
    "\\\\\\\"test\\\\\\\"",
    "\\\\\\\'test\\\\\\\'",
    "! \\\\\\\" £ $ % ^ & * ( )",
    "\\\\\\\'test\\\\\\\' \\\\\\\"test\\\\\\\"",
]

JSONで解析できないため、JSONLint.comで上記を確認したところ、次のエラーが発生しました。

Parse error on line 2:
..."test\\\\\\\"",    "\\\\\\\'test\\\\\\\
----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['

修正できることはわかっていますが、どこがわかりませんか?

  1. MySQLに送信する前にPHPで?
  2. MySQLデータベースに送信される前にMySQLクエリで?
  3. JSONに行く前にPHPで?
4

1 に答える 1

0

MySQLに送信する前にPHPで?

答えは準備されたステートメントです。PDOまたはmysqliを使用する

MySQLデータベースに送信される前にMySQLクエリで?

答えは準備されたステートメントです。PDOまたはmysqliを使用する

JSONに行く前にPHPで?

答えはjson_encodeです。同じデータを 2 回エスケープしないでください。

于 2012-08-26T14:10:04.690 に答える