首页 > 解决方案 > 带有 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 语句中,我尝试替换“;” 带有“
”标签,但这不起作用。

有没有人遇到过这个问题?也许有人可以指出我正确的方向!

谢谢

杰森

标签: phpjson

解决方案


谢谢各位的意见。我偶然发现了一个解决我眼前问题的方法。我将 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","&lt;br&gt;",str_replace("\n","&lt;br&gt;",$value));
            $NEWLINE[] = "\"" . $value . "\"";
        }
        $FINDATA[] = "[" . implode(",",$NEWLINE) . "]";
    }

但我现在将研究使用评论中提到的 json_encode() 。

谢谢,

杰森


推荐阅读