php - 带有 JSON 问题的 PHP
问题描述
我是 PHP 新手,遇到了一个让我发疯的问题。也许这里有人可以让我知道我做错了什么。
我有一个用户填写的信息。以下脚本使用输入 mysql 数据库的日期来生成 json 数据:
<?php
include("../includes.php");
$sq = new SQL();
$TableName = "permissions";
$Fields = $_POST["Fields"];
$FieldsSTR = "`" . str_replace("*;*","`,`", $Fields) . "`";
$Join = "AND";
$Start = 0;
$Limit = $_POST["Limit"];
if($Limit == "")$Limit = 1000;
$Where = $_POST["Where"];
$WhereSTR = "";
if($Where !== "")$WhereSTR = str_replace("*;*"," $Join ", $Where);
$q = "SELECT $FieldsSTR FROM `$TableName` $WhereSTR";
$data = $sq->sqlQuery($q);
if(sizeof($data)>0)array_shift($data);
header("Content-Type: application/json");
echo "[";
foreach($data as $k=>$line){
echo "[";
echo "\"" . str_replace("*;*","\",\"",$line) . "\"";
echo "]";
if($k < sizeof($data) - 1)echo ",";
}
echo "]";
exit;
?>
我遇到的问题是它已经停止工作。一天还好,第二天就不行了。我在想这个问题的原因可能是疯狂的用户数据已输入数据库。在我的 foreach 语句中,我尝试替换“;” 带有“
”标签,但这不起作用。
有没有人遇到过这个问题?也许有人可以指出我正确的方向!
谢谢
杰森
解决方案
谢谢各位的意见。我偶然发现了一个解决我眼前问题的方法。我将 foreach 循环更改为以下内容:
foreach($data as $k=>$line){
$parts = explode("*;*",$line);
$NEWLINE = array();
for($i = 0;$i < sizeof($parts);$i++){
$value = $parts[$i];
$value = str_replace("\r","<br>",str_replace("\n","<br>",$value));
$NEWLINE[] = "\"" . $value . "\"";
}
$FINDATA[] = "[" . implode(",",$NEWLINE) . "]";
}
但我现在将研究使用评论中提到的 json_encode() 。
谢谢,
杰森
推荐阅读
- javascript - 在生产中获取请求时不断出错(MongoDB mlab、React/Redux、Webpack、heroku)
- sonarqube - 是否可以从特定日期开始每个项目的 SonarQube 泄漏期
- django - 如何获取一个字段的最新值(Django Model.objects.filter())
- testing - 如何重用 puppeteer 测试
- distributed-database - `ERROR 9001 (HY000): PD server timeoutstart timestamp may fall behind safepoint` 在 TiDB 中
- google-fabric - librashlitics 在构建中不存在
- sql - 当我尝试通过不存在的列名过滤 information_schema.columns.column_name 时,Postgres 引发错误
- dns - Mailgun 电子邮件被某些提供商拒绝
- javascript - 单击多个元素时jQuery更改图标
- reactjs - 我应该将默认反应属性设置为 null