当我从PHP函数打印JSON时,它只打印SQL中的一行

问题描述:

我创建了一个从SQL中提取数据并将其转换为JSON的函数,但是当我打印数据时,它只返回一行。当我从PHP函数打印JSON时,它只打印SQL中的一行

Db_functions.php

public function getfeeds(){ 
    $stmt = $this->con->prepare("select id,title,status,profilepic,created_at,url from news"); 
    $stmt->execute(); 
    $result = $stmt->get_result(); 
    $row = array(); 
    while ($r = $result->fetch_assoc()) { 
     $row =$r; 
     $nrow['news'] = array($row); 
     $json = str_replace("\\/", "/",json_encode($nrow,JSON_PRETTY_PRINT)); 
     echo'<pre>'; 
     return $json; 
    } 

feed.php

<?php 
session_start(); 
require_once 'include/DB_Functions.php'; 
$db = new DB_Functions(); 
$feeds= $db->getfeeds(); 
print_r($feeds); 
    ?> 

输出是

{ 
    "news": [ 
     { 
      "id": 1, 
      "title": "test", 
      "status": "this is content", 
      "profilepic": "0", 
      "created_at": "2016-09-05 12:11:17", 
      "url": "0" 
     } 
    ] 
} 

但输出应该来像这样两行

{ 
    "news": [ 
     { 
      "id": "1", 
      "title": "test", 
      "status": "this is content", 
      "profilepic": "0", 
      "created_at": "2016-09-05 12:11:17", 
      "url": "0" 
     } 
    ] 
} 
{ 
    "news": [ 
     { 
      "id": "2", 
      "title": "JCECE", 
      "status": "JCECE 2016 will be conducted on June 5, 2016 by JCECE Board, which is the exam conducting authority for the engineering entrance examination. JCECE 2016 will be conducted to offer admissions to undergraduate engineering courses at the participating institutes of JCECE 2016 in the state of Jharkhand. As of now, there are a total of 19 colleges (government+private) that will offer over 6000 B.E/B.Tech seats to aspiring candidates in Jharkhand. \r\n\r\nApplication Dates:16 Apr 2016 to 16 May 2016\r\n\r\nAdmit Card Date:11 May 2015\r\n\r\nExam Dates:05 Jun 2016\r\n\r\nResult Date:01 Jul 2015 to 10 Jul 2015  ", 
      "profilepic": "http://results.jharkhandeducation.net/JCECEB/JCECEB-Logo.jpg", 
      "created_at": "2016-09-16 10:14:55", 
      "url": "https://jcece.co.in/" 
     } 
    ] 
} 
+1

你有RETURN ** while循环**这是否给你一个线索 – RiggsFolly

+0

良好的代码缩进会作出明显的里面,因为它没有当我整理了一下说一段代码。 – RiggsFolly

+0

@ riggsfolly我曾尝试返回,而循环其给予空值 –

你有一个返回INSIDE你的while循环,因此它只返回结果集中的第一行。

public function getfeeds(){ 
    $stmt = $this->con->prepare("select id,title,status,profilepic,created_at,url from news"); 
    $stmt->execute(); 
    $result = $stmt->get_result(); 

    $nrow = array(); 

    while ($r = $result->fetch_assoc()) { 

     $nrow[] = $r; 
    } 

    return json_encode($nrow); 
} 

这样调用

<?php 
session_start(); 
require_once 'include/DB_Functions.php'; 
$db = new DB_Functions(); 
$feeds= $db->getfeeds(); 
// its a string and not an array so print_r wont work 
echo $feeds; 
?> 
+0

谢谢你的工作我是新的编码,所以学习slowley –

+0

不客气 – RiggsFolly

+0

如果我有我可以进一步联系你任何其他功能的问题。 –