Я пытаюсь добавить несколько записей в базу данных, я отправляю массив json, используя метод строкового запроса в залпе в android, в скрипт php, чтобы добавить эти записи, но не получаю результат массива json в php. Я просто хочу добавить несколько записей в mysql, поэтому отправка массива json в скрипт для добавления этих записей путем извлечения всех данных в нем
Вот функция вставки данных
private void InsertData() {
if (arrayList.size()>0) {
Toast.makeText(getApplicationContext(), "list not null "+i+arrayList.size(),
Toast.LENGTH_LONG).show();
//for (i=0;i<arrayList.size();i++) {
//Toast.makeText(getApplicationContext(),"inside for loop", Toast.LENGTH_LONG).show();
StringRequest stringRequest = new StringRequest(Request.Method.POST,
Constants.insert_macthes,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
if (jsonObject.getInt("success") == 1) {
Toast.makeText(getApplicationContext(), jsonObject.getString("message"), Toast.LENGTH_LONG).show();
} else
Toast.makeText(getApplicationContext(), "not added", Toast.LENGTH_LONG).show();
dis = jsonObject.getString("message");
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
if (error instanceof TimeoutError || error instanceof NoConnectionError) {
Toast.makeText(MyMatchas.this,
"Error time out",
Toast.LENGTH_LONG).show();
} else if (error instanceof AuthFailureError) {
//TODO
Toast.makeText(MyMatchas.this,
"Auth Error time out",
Toast.LENGTH_LONG).show();
} else if (error instanceof ServerError) {
//TODO
Toast.makeText(MyMatchas.this,
"Server Error time out",
Toast.LENGTH_LONG).show();
} else if (error instanceof NetworkError) {
//TODO
Toast.makeText(MyMatchas.this,
" Network Error time out",
Toast.LENGTH_LONG).show();
} else if (error instanceof ParseError) {
Toast.makeText(MyMatchas.this,
"Parse Error time out",
Toast.LENGTH_LONG).show();
//TODO
}
}
}) {
@Override
protected Map<String, String> getParams() {
JSONArray array=new JSONArray();
JSONObject jsonObject=new JSONObject();
for(i=0;i<arrayList.size();i++)
{
Log.v("fetching record:",arrayList.get(i).getId());
arr[i] = "dog_id"+arrayList.get(i).getId()+"dog_name"+arrayList.get(i).getDog_name()+"score"+arrayList.get(i).getDog_score()+"user_id"+ String.valueOf(SharedPrefManager.getInstance(MyMatchas.this).getUserid());
try {
//Log.v("put in json:",arrayList.get(i).getId());
jsonObject.put("dog_id",arrayList.get(i).getId());
jsonObject.put("dog_name",arrayList.get(i).getDog_name());
jsonObject.put("score",arrayList.get(i).getDog_score());
jsonObject.put("user_id",String.valueOf(SharedPrefManager.getInstance(MyMatchas.this).getUserid()));
} catch (JSONException e) {
Log.v("error exceptiion:",arrayList.get(i).getId());
e.printStackTrace();
}
array.put(jsonObject);
}
HashMap<String ,String> params=new HashMap<String, String>();
Log.v("All data:",jsonObject.toString());
Log.v("json object data:",array.toString());
params.put("params",array.toString());
return params;
}
};
// Creating RequestQueue.
RequestQueue requestQueue = Volley.newRequestQueue(MyMatchas.this);
// Adding the StringRequest object into requestQueue.
requestQueue.add(stringRequest);
// }
// Toast.makeText(getApplicationContext(),dis,Toast.LENGTH_LONG).show();
}
Вот скрипт Php
<?php
$con=mysqli_connect("localhost","m","rt","Friend");
if ($_SERVER['REQUEST_METHOD']=='POST'){
$arr = $_POST['params'];
$json = json_decode($arr,true);
echo $json;
foreach($json as $obj){
$Sql_Query = "INSERT INTO Match_list (dog_id,score,dog_name,User_ID) values
('$obj->dog_id','$obj->dog_name','$obj->score','$obj->user_id')";
if ($con->query($Sql_Query) === TRUE)
{
die(json_encode(array("success"=>1,"message"=>"Data Added
Successfuly")));
}
}
}
mysqli_close($con);
?>
Обязательно проверьте свой запрос, распечатав его и попробовав вручную в своем sql-клиенте.
Тем не менее та же проблема не с получением данных, пожалуйста, помогите мне, а также только последние данные списка в arraylist находятся в массиве json, который я видел с помощью сообщения журнала в android
Каков результат echo $Sql_Query после строки $Sql_Query = "INSERT INTO...?
Я пробовал вручную добавлять данные, но я думаю, что он не получает массив json из метода запроса строки android volley, а также я проверил в массиве json, что квадратная скобка [] не находится в массиве json, исходящем от android
пожалуйста, помогите мне, я застрял, не знаю, что делать
Каков результат echo $ Sql_Query после строки $ Sql_Query = "INSERT INTO ...?"




Вам нужно каждый раз создавать новый объект для хранения новых значений
JSONArray array = new JSONArray();
JSONObject jsonObject;
GettingVaccineData gettingVaccineData;
for (int i = 0; i < vaccineData.size(); i++) {
jsonObject = new JSONObject();
gettingVaccineData = vaccineData.get(i);
try {
jsonObject.put("LCID", reqResponse);
jsonObject.put("LVID", gettingVaccineData.getID());
jsonObject.put("LVNAME", gettingVaccineData.getNAME());
jsonObject.put("LSCHEDULE", scheduleDays.get(i));
jsonObject.put("LGIVEN", "NULL");
jsonObject.put("LSTATUS", "not given");
jsonObject.put("LHOSPITAL", "NULL");
} catch (JSONException e) {
e.printStackTrace();
}
array.put(jsonObject);
Вы можете получить доступ к таким значениям:
echo $json[0]["dog_id"];
Это потому, что запрос не выполняется и никогда не разрешается в
true. "INSERT INTO Match_list (dog_id, score, dog_name, User_ID) values ('$ obj-> dog_id', '$ obj-> dog_name', '$ obj-> score', '$ obj-> user_i d')» по-прежнему остается строкой без подстановки. Попробуйте обернуть свои переменные в {}...VALUES ('{$obj->dog_id}', '{$obj->dog_name}'...или объединить их вместо...VALUES'. $obj->dog_id . "', '". $obj->dog_name ."...