为什么JSON虽然数据库中有数据但显示NULL数据?

时间:2013-01-02 06:11:34

标签: php mysql json

我编写了一个php代码,用于从mysql数据库生成JSON文件。当我检查JSON文件时,它显示一些数据为NULL,尽管我的数据库没有NULL数据。 这是我的PHP代码:

$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);

此处,DATATYPE和尺寸为:

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)

3 个答案:

答案 0 :(得分:3)

你的utf-8数据已损坏

快速修复:

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

答案 1 :(得分:1)

请在浏览器中打印数组,然后按ctrl + u查看页面来源 它将使用适当格式的值打印整个数组,并查看其中是否有空值...

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

希望上面的代码可以帮助您找到问题所在的位置.....

答案 2 :(得分:0)

首先尝试在var_dump($response);之前执行fopen,以确认$response确实获得了正确的数据。

其次,您的文件名对我来说不正确。双正斜杠(/)有什么用?您只需要转义反斜杠(\),因为反斜杠是转义字符。

更改此行:

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

到此:

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

这可能对你有用,但它不仅仅是发表评论,我们可以进一步研究。