2017-02-13 4 views
0

Мне нужно отправить целую базу данных, созданную мной на эмуляторе, на мой сервер. Просто узнал о JSON.массив объектов JSON записывается в PHP, затем в базу данных

Начиная простой, я попробовал этот код:

JSONObject jsonObject = new JSONObject(); 

      try { 
       jsonObject.put("comment", "OK1"); 
       jsonObject.put("category", "pro1");     

       String message = jsonObject.toString(); 
       OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
       wr.write(message); 
       wr.flush(); 
       wr.close(); 

и мой PHP является

$json = file_get_contents('php://input'); 
$obj = json_decode($json); 
$comment = $obj->{'comment'}; 
$category = $obj->{'category'}; 
$sql = "INSERT INTO test1 (comment, category) VALUES ('$comment', '$category')"; 

и я могу поставить объекты в моих таблицах. Теперь я хочу создать массив таким образом, чтобы у меня было несколько объектов (я предполагаю, что это правильный способ сделать это? Так что, если у меня есть несколько собак с именем и возрастом, связанным с ним, я бы поставил их в array, right?)

Я пробовал этот код ниже только с одним объектом в моем массиве и ничего не печатал в моей базе данных. Я не изменил свой PHP-код, потому что не знаю, что бы я изменил.

JSONObject jsonObject = new JSONObject(); 
    JSONArray jsonArray = new JSONArray(); 
      try { 
       jsonObject.put("comment", "OK1"); 
       jsonObject.put("category", "pro1"); 
       jsonArray.put(jsonObject); 

       String message = jsonArray.toString(); 
       OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 

       wr.write(message); 
       wr.flush(); 
       wr.close(); 

Предполагая, что это правильный способ сделать это, помещая объекты в массив, а затем писать их, как я в конечном счете цикл через массив, если у меня есть 2 или 3 объектов для отправки?

Спасибо!

ответ

2

Что-то, как это должно работать:

$json = file_get_contents('php://input'); 

// Decode into array instead of stdclass 
$arr = json_decode($json, true); 

// Loop each object in the outer array 
foreach ($arr as $obj) { 
    $comment = $obj['comment']; 
    $category = $obj['category']; 
    $sql = "INSERT INTO test1 (comment, category) VALUES ('$comment', '$category')"; 
} 
+0

я заменил свой код, что я написал выше для PHP части с вашими-х и ничего не будет размещена в моей базе данных :( – Pam

+0

@Pam Это не весь код, Идея состоит в том, чтобы иметь петлю, а затем делать то, что вы уже делаете внутри этого цикла. Это должно вставить новую строку для каждого объекта. – OptimusCrime

Смежные вопросы