繁体   English   中英

来自PHP JSON编码的无效JSON格式

[英]Invalid JSON format from PHP json encode

我有一个对Json数据进行编码的PHP文件,当我查看JSON输出时(其单个数据块),我得到了有效的JSON代码语法,这是一个示例: 单个数据块

但是,当JSON产生多个数据块时,它将生成无效的JSON格式,如下所示: 多个数据块

这是我的PHP代码:

<?php 
header('Content-Type: application/json; charset=utf-8', true,200);
DEFINE('DATABASE_USER', 'xxxxx');
DEFINE('DATABASE_PASSWORD', 'xxxxxx');
DEFINE('DATABASE_HOST', 'xxxxxxxxxxx');
DEFINE('DATABASE_NAME', 'xxxxxxxx');

// Make the connection:
$dbc = @mysqli_connect(DATABASE_HOST, DATABASE_USER, DATABASE_PASSWORD,
 DATABASE_NAME);
$dbc->set_charset("utf8");
if (!$dbc) {
 trigger_error('Could not connect to MySQL: ' . mysqli_connect_error());
}


if(isset($_GET['keyword'])){//IF the url contains the parameter "keyword"
$keyword = trim($_GET['keyword']) ;//Remove any extra  space
$keyword = mysqli_real_escape_string($dbc, $keyword);//Some validation

$query = "select name,franco,alpha,id,url,songkey,chord from song where name like '%$keyword%' or franco like '%$keyword%'";
//The SQL Query that will search for the word typed by the user .

$result = mysqli_query($dbc,$query);//Run the Query

if($result){//If query successfull
 if(mysqli_affected_rows($dbc)!=0){//and if at least one record is found
 while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)){ //Display the record

 $data = array();
 $data = $row;  
 echo $_GET[$callback]. ''.json_encode($data).'';
 }
 }else {
 echo 'No Results for :"'.$_GET['keyword'].'"';//No Match found in the Database
 }

}
}else {
 echo 'Parameter Missing in the URL';//If URL is invalid
}
?>

这是因为您当时正在对结果集的一行进行JSON编码。 如果调用客户端期望这样做,则这不是有效的JSON结构。

可能,您将需要将每一行作为一个条目放入数组中,然后进行JSON编码并回显生成的数组。

像这样:

if($result){//If query successfull
    if(mysqli_affected_rows($dbc)!=0){//and if at least one record is found
        $array = array();
        while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)){ //Display the record
            $array[] = $row;
        }
        echo json_encode($array);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM