2016-09-25 136 views
-1

我創建了一個從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我曾嘗試返回,而循環其給予空值 –

回答

3

你有一個返回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

如果我有我可以進一步聯繫你任何其他功能的問題。 –