PHP MySql获取json没有内容


PHP MySql fetch json no content

我从数据库中获取结果并转换为JSON时遇到问题。在我的API调用中,它为我提供了状态为200的返回主体的空内容(完全空白)。

这是我的代码:

$weekAndYear = $year."/".$week; // incoming params as e.g "2016/19"
$stmt = $this->db->prepare("SELECT r.*, p.code FROM report r, product p WHERE "
        . "r.pid=p.pid AND r.product=:productCode "
        . "AND r.status='Published' AND r.pid=25 AND r.week=:weekAndYear");
$stmt->bindparam(":productCode", $productCode);
$stmt->bindparam(":weekAndYear", $weekAndYear);
$stmt->execute();
while($price=$stmt->fetch(PDO::FETCH_ASSOC)) {
    //echo $price;
    $arr_price[] = $price;
 }
 
$data['priceReport'] = $arr_price;
 
 
//echo $weekAndYear;
$data['status'] = "OK";
return json_encode($data);

当我在phpmyadmin MySQL服务器中测试该查询时,它运行良好。

在我的PHP方面,不同的$weekAndYear参数会有一些工作良好,有些则不正常。数组部分有什么问题吗?

我的API响应头:

缓存控制→没有存储,没有缓存,必须重新验证,后检查=0,前-
check=0
联系→保持活力
内容长度→0
内容类型→application/json
日期→2016年5月5日星期四格林尼治标准时间06:49:28
过期→1981年11月19日星期四08:52:00 GMT
保持活力→timeout=5,max=100
普拉格玛→无缓存
服务器→Apache/2.4.18(Unix)LibreSSL/2.2.6 PHP/5.3.51
X-Powered-By→PHP/5.3.21

请帮忙。

我假设(可能是错误的)您的代码片段不是函数。将最后一行从返回更改为回波,如下所示:

echo json_encode($data);

除非第一个代码片段是函数,否则需要使用json_encode而不是返回语句。

Fetch可以获取任何类型的内容,甚至HTML。PHP所做的是生成内容,将内容写入文件并发送到浏览器。当您使用PHP生成HTML时,您不返回它,而是将它echo到页面。

AJAX也会发生同样的情况。您可以使用PHP将数据写入文件并为其提供服务

所以替换这个:

return json_encode($data);

这个:

echo json_encode($data);