PHP&;JSON:尝试将JSON写入Mysql

PHP&;JSON:尝试将JSON写入Mysql,php,json,Php,Json,我遇到了一个问题,我的PHP脚本打开了一个带有JSON代码的文件,需要将其插入MySQL数据库 出于某种原因,它只显示JSON的一些输出 这是我的密码 $json = json_decode(file_get_contents('data.json'), true); $data = $json; // VAR's $system = $data['System']; $cid_from = $data["From"]; $cid_to = $data['To'];

我遇到了一个问题,我的PHP脚本打开了一个带有JSON代码的文件,需要将其插入MySQL数据库

出于某种原因,它只显示JSON的一些输出

这是我的密码

 $json = json_decode(file_get_contents('data.json'), true);
  $data = $json;
  // VAR's
  $system = $data['System'];
  $cid_from = $data["From"];
  $cid_to = $data['To'];

  //DEBUG USAGES
  $array = print_r($data, true);


  ////// THIS ONE WORKS FINE
  echo $data["System"];

  ////// THIS ONE DOESN'T WORK
  echo $data["To"];  

  file_put_contents('output/json-local.txt',$array . "\r\n", FILE_APPEND);

  ////// BUT HERE IT ACTUALLY WORKS
  file_put_contents('output/cli-from.txt',$data['From']. "\r\n", FILE_APPEND);
  file_put_contents('output/cli-to.txt',$data['To']. "\r\n", FILE_APPEND);
  // file_put_contents('json-sysid-local.txt',$systemid . "\r\n", FILE_APPEND);
下面是data.json的内容

{"action":"call-data-record",
"System":"48130b83e2232f0ecd366a92d4d1261d",
"PrimaryCallID":"n1bWEfCdHcf@MSS.MTN.CO.ZA-b2b_1",
"CallID":"0440b807@pbx",
"From":"<sip:+27722080036@xxx.co.za>",
"To":"<sip:27102850816@xxx.co.za>",
"Direction":"O",
"RemoteParty":"",
"LocalParty":"",
"TrunkName":"",
"TrunkID":"",
"Cost":"",
"CMC":"",
"Domain":"xxx.co.za",
"TimeStart":"2018-08-14 16:03:21",
"TimeConnected":"",
"TimeEnd":"2018-08-14 16:03:23",
"LocalTime":"2018-08-14 18:03:21",
"DurationHHMMSS":"0:00:00",
"Duration":"0",
"RecordLocation":"",
"RecordUsers":"",
"Type":"hunt",
"Extension":"100",
"ExtensionName":"100",
"IdleDuration":"",
"RingDuration":"2",
"HoldDuration":"0",
"IvrDuration":"0",
"AccountNumber":"400",
"IPAdr":"",
"Quality":"VQSessionReport: CallTerm\r\nLocalMetrics:\r\nCallID:0440b807@pbx\r\nFromID:<sip:27102850816@xxx.co.za>\r\nToID:<sip:+27722080036@xxxx.co.za>;tag=1460166964\r\nx-UserAgent:Vodia-PBX/57.0\r\nx-SIPmetrics:SVA=RG SRD=91\r\nx-SIPterm:SDC=OK SDR=OR\r\n"}
{“操作”:“调用数据记录”,
“系统”:“48130b83e2232f0ecd366a92d4d1261d”,
“PrimaryCallID”:n1bWEfCdHcf@MSS.MTN.CO.ZA-b2b_1“,
“CallID”:0440b807@pbx",
“从”:“从”,
“致”:“,
“方向”:“O”,
“远程方”:“远程方”,
“本地参与方”:“,
“名称”:“,
“中继ID”:“,
“成本”:“,
“CMC”:“,
“域”:“xxx.co.za”,
“TimeStart”:“2018-08-1416:03:21”,
“时间连接”:“,
“时间结束”:“2018-08-1416:03:23”,
“本地时间”:“2018-08-1418:03:21”,
“持续时间HHMMS”:“0:00:00”,
“持续时间”:“0”,
“记录位置”:“,
“记录用户”:“,
“Type”:“hunt”,
“扩展”:“100”,
“扩展名”:“100”,
“闲置教育”:“,
“响铃持续时间”:“2”,
“保持持续时间”:“0”,
“IVR持续时间”:“0”,
“帐号”:“400”,
“IPAdr”:“,
“质量”:“VQSessionReport:CallTerm\r\nLocalMetrics:\r\n CALLID:0440b807@pbx\r\nFromID:\r\nToID:;tag=14601664\r\nx用户代理:Vodia PBX/57.0\r\nx SIPmetrics:SVA=RG SRD=91\r\nx SIPterm:SDC=OK SDR=OR\r\n“}

浏览器源代码清楚地显示“To”:“由PHP正确写入浏览器输出,但浏览器将其解释为HTML开始标记,因此忽略了其余内容

将输出包装到PHP
htmlspecialchars()
函数中,以查看文件中的输出

将-
echo“添加到:”.htmlspecialchars($data[”到“])

您的
“到”
数据被封装在
中。这会导致浏览器将其解释为HTML标记,而不显示任何内容

您可以(应该!)转义特殊的HTML控件字符:

echo htmlspecialchars($data[“To”]);


编辑:也可以将其添加到其他输出中。如果字符串不包含这样的字符,则只需在更改后返回。您可以通过这种方式消除可能的攻击向量。

您的
“到”
数据被封装在
中。这可能会导致浏览器将其解释为HTML标记,而不显示任何内容。尝试“查看页面源”,它是否显示在那里?嗨,我刚刚在这里发布时也注意到了。。由于我无法编辑收到的内容,是否有解决方案。问题识别很好,没有解决方案。添加解决方案太晚了,但我想有点晚了。谢谢你是一个传奇人物