Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php将数据编码为json_Php_Json - Fatal编程技术网

使用php将数据编码为json

使用php将数据编码为json,php,json,Php,Json,我正在用php做一个web服务,将数据编码为json。我的php代码是: function getProgramDay($day) { global $DDBB_SERVER, $DDBB_USER, $DDBB_PASSWORD, $DDBB; $sql = "SELECT program.id, programa.name FROM `mybd` WHERE program.day = '" . $day . "'"; $con = mysqli

我正在用php做一个web服务,将数据编码为json。我的php代码是:

    function getProgramDay($day)
{

    global  $DDBB_SERVER, $DDBB_USER, $DDBB_PASSWORD, $DDBB;



    $sql = "SELECT program.id, programa.name FROM `mybd` WHERE program.day = '" . $day . "'";


    $con = mysqli_connect($DDBB_SERVER, $DDBB_USER, $DDBB_PASSWORD, $DDBB);

    if (!$con) {
        die('Error de Conexión (' . mysqli_connect_errno() . '): ' . mysqli_connect_error());
    }

    if (!mysqli_set_charset($con, "utf8")) {
        die("Error loading character set utf8:" . mysqli_error($con));
    }

    $result = mysqli_query($con, $sql);

    $res = array();

    // Prepare data
    while ($row = mysqli_fetch_assoc($result)) {
        $res[] = $row;
    }

    // Free resultset
    mysqli_free_result($result);

    // Close connection
    mysqli_close($con);

    // Return data
    return $res;

}
这个函数在json中的结果是:

[{"id":"1","nombre":"Hello"}]
我希望结果是:

{"results":[{"id":"1","nombre":"Hello"}]}
我该怎么做?我试过了,但没有成功:

return "{'results':" .$res . "}";
非常感谢:-)

如注释中所述,如果要返回数组并在调用代码中创建json,请执行以下操作:

return array("results"=>$res);
如注释中所述,如果要返回数组并在调用代码中创建json,请执行以下操作:

return array("results"=>$res);
你的产出

 [{"id":"1","nombre":"Hello"}]
是一个数组(使用它构建)
//准备数据
while($row=mysqli\u fetch\u assoc($result)){
$res[]=$row;
}

你想要的是一个对象

对象(stdClass)#6(1){
[“结果”]=>数组(1){
[0]=>对象(stdClass)#7(2){
[“id”]=>字符串(1)“1”
[“nombre”]=>字符串(5)“你好”
}
}
}

因此,使用json_encode更改您的准备数据并使用json_encode

 [{"id":"1","nombre":"Hello"}]
是一个数组(使用它构建)
//准备数据
while($row=mysqli\u fetch\u assoc($result)){
$res[]=$row;
}

你想要的是一个对象

对象(stdClass)#6(1){
[“结果”]=>数组(1){
[0]=>对象(stdClass)#7(2){
[“id”]=>字符串(1)“1”
[“nombre”]=>字符串(5)“你好”
}
}
}


因此,使用json_encode更改您的准备数据,但不能使用我的示例代码?感谢您的代码可能容易受到sql注入攻击<代码>$res['results'][]=$row但不能用我的示例代码来实现?感谢您的代码可能容易受到sql注入攻击<代码>$res['results'][]=$row我希望调用代码中调用了
json\u encode
(他说他得到了json),所以他不应该做两次,只需返回php arrayThanks,它会放入“{\”结果\“:使用json验证器,它会说这不是有效的json,我如何才能退出此\?非常感谢much@Igor这是因为您使用了两次json_encode-按照上面修改的代码执行(或查看我对您的问题的评论),我希望调用代码中调用
json_encode
(正如他所说,他得到了json),所以他不应该做两次,只需返回php数组存储库,它会放入“{\”results\”:使用json验证程序,它会说这不是有效的json,我怎么能退出这个\?谢谢much@Igor这是因为您使用了两次json_encode-按照上面修改的代码进行操作(或者查看我对您的问题的评论)