在php中遍历JSONArray的值

在php中遍历JSONArray的值,php,android,mysql,android-volley,Php,Android,Mysql,Android Volley,我在android应用程序中有3个ArrayList。我通过android volley POST请求将它们发送到php,如: public RequestPostBook(long id, ArrayList<String> bookNames, ArrayList<String> bookAuthors, ArrayList<String> subjects, String date,Response.

我在android应用程序中有3个ArrayList。我通过android volley POST请求将它们发送到php,如:

public RequestPostBook(long id, ArrayList<String> bookNames, ArrayList<String> bookAuthors, ArrayList<String> subjects,
                           String date,Response.Listener<String> listener)
    {
        super(Method.POST, REGISTER_REQUEST_URL, listener, null);

        JSONArray bookNamesJSON = new JSONArray(Arrays.asList(bookNames));
        JSONArray bookAuthorsJSON = new JSONArray(Arrays.asList(bookAuthors));
        JSONArray subjectsJSON = new JSONArray(Arrays.asList(subjects));


        params = new HashMap<>();
        params.put("candidateId", id + "");
        params.put("bookName",bookNamesJSON.toString());
        params.put("authorName",bookAuthorsJSON.toString());
        params.put("subjectName",subjectsJSON.toString());
        params.put("reqDate",date);
    }

    @Override
    public Map<String, String> getParams() {
        return params;
    }
当我在应用程序中运行此操作时,这是我在BookRequest表中得到的内容:

12100116050(candidateId)    Array(subjectName)    Array(bookName)    Array(authorName)    2019-03-08(reqDate)

有谁能帮我把正确的值发送到表中吗?提前感谢。

请尝试以下代码

<?php

$candidateId = $_POST["candidateId"];
$reqDate = $_POST["reqDate"];
$subjectName = json_decode($_POST["subjectName"])[0];
$bookName = json_decode($_POST["bookName"])[0];
$authorName = json_decode($_POST["authorName"])[0];

foreach ($subjectName as $i => $subject) {
    $stmt = $conn->prepare("INSERT INTO BookRequisition VALUES (?,?,?,?,?);");
    $stmt->bind_param("dssss", $candidateId, $subject, $bookName[$i], $authorName[$i], $reqDate);
    $stmt->execute();
}

?>


注意:您应该对从设备发布的数据进行适当的验证

你能告诉我你在做
var\u dump($\u POST)时得到了什么输出吗@Saji我对php非常陌生。你能告诉我应该把这个放在哪里吗?只要放在
foreach($value作为subjectName)
@ArnabBanerjee之前,在上面的代码片段顶部写下以下内容,运行代码,并请与我们共享结果:
var\u dump($\u POST);退出这将帮助我们了解您获取的数据是什么样子的,以及应该如何处理。一旦理解了数据格式,您的任务就相对简单了。@Saji输出:数组(5){[“reqDate”]=>string(10)“2019-03-08”[“authorName”]=>string(17)”[[“theo”,“Yash”]]“[“candidateId”]=>string(11)“12100116050”[“bookName”]=>string(20)”[“css”,“let us C”]]“[“subjectName”=>string(13)”[“web”,“C”]]我必须在BookRequest表中插入多本书。这些清单包含了这些书的细节。因此,我认为$stmt应该使用列表中的不同值执行多次。此解决方案将只插入一本书。我错了吗?回答得很好。非常感谢
<?php

$candidateId = $_POST["candidateId"];
$reqDate = $_POST["reqDate"];
$subjectName = json_decode($_POST["subjectName"])[0];
$bookName = json_decode($_POST["bookName"])[0];
$authorName = json_decode($_POST["authorName"])[0];

foreach ($subjectName as $i => $subject) {
    $stmt = $conn->prepare("INSERT INTO BookRequisition VALUES (?,?,?,?,?);");
    $stmt->bind_param("dssss", $candidateId, $subject, $bookName[$i], $authorName[$i], $reqDate);
    $stmt->execute();
}

?>