DBに、
$connect->query(''SET NAMES utf8'')
として格納している文字列データを、「JSONエクスポート」すると、
$connect->query(\'SET NAMES utf8\')
となってしまい、JSONを処理する際、エラーになります。
どうして「''」は「\'」へ変換されるのでしょうか?
また、これを回避するには、どうすればいいでしょうか?
phpMyAdmin
バージョン: 3.5.0
質問文ではシングルクォーテーションを2個続けて書いてますが、
phpの文法的におかしいのでダブルクォーテーションに読み替えて回答を書きます。
JSONのデータはダブルクォーテーションで囲みますので、
データ内にダブルクォーテーションがあると、
区切る場所がおかしくなって正常なデータとして扱えなくなります。
おかしくなった例
"$connect->query("SET NAMES utf8")" は "$connect->query(" が一つのデータとして扱われ、 続くSの時点でエラーとなってしまいます。
変なところで区切られてしまうことを回避(エスケープ)するために、
半角の¥マーク(英文だとバックスラッシュになります)をつけます。
"$connect->query(\"SET NAMES utf8\")"
これは仕様なので回避する方法はありません。
JSONデータをインポートするソフトは、
自動的にエスケープを削除したりしてくれるはずですが、
自分でプログラムを書いて読み込ませてる場合には、
エスケープ文字(半角の¥)を削除しないといけないかもしれません。