2010-03-18 36 views
89
CREATE TABLE Posts 
{ 
id INT PRIMARY KEY AUTO_INCREMENT, 
title VARCHAR(200), 
url VARCHAR(200) 
} 

đang json.phpCách tạo tệp .json bằng PHP?

<?php 
$sql=mysql_query("select * from Posts limit 20"); 
echo '{"posts": ['; 
while($row=mysql_fetch_array($sql)) 
{ 
$title=$row['title']; 
$url=$row['url']; 
echo ' 

{ 

"title":"'.$title.'", 

"url":"'.$url.'" 

},'; 
} 
echo ']}'; 

?> 

tôi phải tạo ra results.json tập tin.

Trả lời

177

Dưới đây là một số mẫu mã:

<?php 
$sql="select * from Posts limit 20"; 

$response = array(); 
$posts = array(); 
$result=mysql_query($sql); 
while($row=mysql_fetch_array($result)) { 
    $title=$row['title']; 
    $url=$row['url']; 

    $posts[] = array('title'=> $title, 'url'=> $url); 
} 

$response['posts'] = $posts; 

$fp = fopen('results.json', 'w'); 
fwrite($fp, json_encode($response)); 
fclose($fp); 


?> 
+1

Tôi đã sử dụng mã này trên dự án của mình. tệp results.json hoạt động tốt trên máy chủ cục bộ và không hoạt động trên máy chủ từ xa. Bạn có thể giải thích tại sao như vậy .. –

+3

Fwrite có thể được tắt trong cài đặt máy chủ của bạn – Chris

+0

mặc dù điều này thật tuyệt vời vì tôi đang sử dụng PHP 5 ngay bây giờ và không có sẵn tại thời điểm câu trả lời này được đăng nhưng bạn có thể loại bỏ $ result = line và inside vòng lặp while của bạn chỉ cần tạo mysql_feth_array ($ sql) –

7

Bạn chỉ có thể sử dụng json_encode chức năng của php và lưu tập tin với các chức năng xử lý tập tin như fopenfwrite.

24

Chèn các giá trị được tìm nạp vào một mảng thay vì lặp lại.

Sử dụng file_put_contents() và chèn json_encode($rows) vào tệp đó, nếu $rows là dữ liệu của bạn.

+0

Tôi thấy câu trả lời của bạn đã được đăng trước lần trả lời nhiều nhất. Nếu chỉ có bạn đã đặt một số mã ví dụ, bạn sẽ nhận được nhiều phiếu bầu hơn. –

3

Nếu bạn đang kéo hồ sơ năng động nó tốt hơn để có 1 file php mà tạo ra một đại diện json và không tạo ra một tập tin mỗi lần.

my_json.php

$array = array(
    'title' => $title, 
    'url' => $url 
); 

echo stripslashes(json_encode($array)); 

Sau đó, trong kịch bản của bạn thiết lập các đường dẫn đến tập tin my_json.php

+1

Khi tôi cố gắng chạy điều này bằng cách sử dụng getJason, tôi nhận được * Tài nguyên được hiểu là Tập lệnh nhưng được chuyển với văn bản kiểu MIME/html * trong bảng điều khiển. – noobcode

+0

@noobcode Để khắc phục điều đó, tôi nghĩ bạn nên đặt tiêu đề 'Content-Type' trong 'my_json.php' của mình. –

17

Sử dụng này:

$json_data = json_encode($posts); 
file_put_contents('myfile.json', $json_data); 

công trình đối với tôi.

3

Ở đây tôi đã đề cập đến cú pháp đơn giản để tạo tệp json và in giá trị mảng bên trong tệp json theo cách khá.

$array = array('name' => $name,'id' => $id,'url' => $url); 
$fp = fopen('results.json', 'w'); 
fwrite($fp, json_encode($array, JSON_PRETTY_PRINT)); //here it will print the array pretty 
fclose($fp); 

Hy vọng nó sẽ làm việc cho bạn ....

0

Trước tiên, bạn cần phải giải mã nó:

$jsonString = file_get_contents('jsonFile.json'); 
$data = json_decode($jsonString, true); 

Sau đó, thay đổi dữ liệu:

$data[0]['activity_name'] = "TENNIS"; 
// or if you want to change all entries with activity_code "1" 
foreach ($data as $key => $entry) { 
    if ($entry['activity_code'] == '1') { 
     $data[$key]['activity_name'] = "TENNIS"; 
    } 
} 

Sau đó lại -xóa và lưu lại tệp:

$newJsonString = json_encode($data); 
file_put_contents('jsonFile.json', $newJsonString); 

copy

Các vấn đề liên quan