2013-01-02 110 views
2

我已經寫了一個php代碼來使mysql數據庫中的JSON文件。當我檢查了JSON文件,它會顯示一些數據NULL,雖然我的數據庫沒有NULL數據.. 這是我的PHP代碼:爲什麼JSON雖然數據庫中有數據,但顯示空數據?

$selectQuery = "SELECT tour_code, day, schedule_title, details FROM tbl_tour_details WHERE status=0"; 
    $response = array(); 
    $posts = array(); 
    $result = mysql_query($selectQuery) or die ("Errored Query: ".$selectQuery); 
    if(mysql_num_rows($result)) 
    { 
     while($row = mysql_fetch_assoc($result)) 
     { 
      $tour_code = $row['tour_code']; 
      $day = $row['day']; 
      $schedule_title = $row['schedule_title']; 
      $details = $row['details']; 

      $posts[] = array('tour_code'=>$tour_code, 'day'=>$day, 'schedule_title'=>$schedule_title, 'details'=>$details); 

     } 
    } 
    $response['posts'] = $posts; 
    $fp = fopen('..//webservices//json//tour_details.json','w'); 
    fwrite($fp, json_encode($response)); 
    fclose($fp); 

這裏,數據類型,且尺寸是:

tour_code = int 
day = int 
schedule_title = varchar(150) 
details = text 

我的數據是這樣的:

tour_code =1 
day = 3 
schedule_title = "Singapore – Genting Highland By Coach (350 KM 5 HRS)" 
details = "This Morning Is The Day Of FUN And Adventure For The Family. Enjoy Spectular Rides And Shows At The Ever-Popular Genting Outdoor Theme Park With Its Myriad Attractions For The Young And Old Alike. Take An Exciting Drive In The Antique Car Or Daring Spins On The Roller Coaster, It’s A Magical Adventure Of Fun And Excitement For The Whole Family! 
Over Night At Hotel First World Deluxe Or Theme Park Or Awana Resort Or Similar. 
(Breakfast, Lunch & Dinner)" 

這裏是我的JSON文件(包括如果爲null,/ R,/ N): json file

這裏是我的var_dump文件(截斷某些數據爲 「...」) var_dump file

這裏是我的print_r($posts)文件(這是完全正確的): print_r($posts file)

+0

什麼是print_r($ posts)的值;後循環.. –

+0

只需看看手冊,['json_decode'函數](http://php.net/json_decode)的返回值,包括錯誤情況以及如何獲得有關任何潛在的更多信息錯誤,在那裏解釋:http://php.net/json_decode – hakre

+0

[**請不要在新代碼中使用'mysql_ *'函數**](http://stackoverflow.com/a/14110189/1723893 )。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 –

回答

3

已損壞的UTF-8數據

快速修復:

$details = iconv("UTF-8", "UTF-8//IGNORE", $row['details']); 
0

第一次嘗試做一個var_dump($response);剛在fopen之前確認$response實際上是獲取正確的數據。

其次,您的文件名稱對我來說看起來不正確。雙正斜槓是什麼(/)?您只需要轉義反斜槓(\),因爲反斜槓是轉義字符。

改變這一行:

$fp = fopen('..//webservices//json//tour_details.json','w'); 

這樣:

$fp = fopen('../webservices/json/tour_details.json', 'w'); 

有機會,這可能會爲你工作,但它不只是把一個評論,我們可以看看它進一步。

+0

我檢查了var_dump,它顯示了所有數據,但在一些數據中,它截斷爲「Meal&D ...」。我的意思是在一些數據後面加上'...' – Dhwani

+0

@Dhwani你是否對'fopen'做了修改?你也可以發佈你的json文件,並解釋你到底是什麼'null'? –

+0

雅我已經改變與json。好的,我會把json文件放在這裏。 – Dhwani

1

請打印在瀏覽器中的陣列,並通過按Ctrl + U鍵 查看網頁的源代碼將打印在正確的格式值整個數組,看看是否有它的任何空值...

while($row = mysql_fetch_assoc($result)) 
     { 
      print_r($row); 
     } 

希望上面的代碼可以幫助你發現ATLEAST哪裏出了問題.....

+0

顯示正確數據的數組。這不是空數據。但是一些JSON數據爲空。 – Dhwani