PHP多维数组处理
我想问,如何处理AJAX发送到PHP文件的多维数组,然后将它们与数据库进行比较。 我找了很多,但找不到一个很好的解决办法。 问题是数组包含其中10个问题的问题id和问题的选定答案。 下面是代码,如果有帮助的话。提前谢谢PHP多维数组处理,php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,我想问,如何处理AJAX发送到PHP文件的多维数组,然后将它们与数据库进行比较。 我找了很多,但找不到一个很好的解决办法。 问题是数组包含其中10个问题的问题id和问题的选定答案。 下面是代码,如果有帮助的话。提前谢谢 $("#next_step").click(function() { var object = {}; $("ul.question").each(function() { var prasanje = $(this).attr("question
$("#next_step").click(function() {
var object = {};
$("ul.question").each(function() {
var prasanje = $(this).attr("questionid");
var odgovor = $("ul#prasanje_" +prasanje+ " > label.answer > li.answer > input.answer:checked").val();
object[prasanje] = odgovor;
});
console.log(object);
$.ajax ({
method: "POST",
url: "procesi.php",
data: {proces: "proverka_odgovor", data: object},
success: function(data) {
console.log(data);
if(data < 8) {
var rezultat = 10 - data;
$("#error_box").show();
$(".info_text").html("Имате [" +rezultat+"] грешни прашања. Потребно е да имате миниум 8 точни прашања за да продолжите на втор степен на регистрацијата!");
} else {
$("#first_step_box").hide();
$("#second_step_box").show();
}
}
});
});
if($_POST["proces"] == "proverka_odgovor") {
$rezultat = 0;
$niza_glavna = json_encode($_POST["data"]);
$data = json_decode($niza_glavna, TRUE);
foreach ($data as $kviz) {
$prasanje = $kviz[0];
$odgovor = $kviz[1];
$proverka = mysqli_query($kon, "SELECT * FROM prasanja WHERE id = '$prasanje' AND tocenodgovor = '$odgovor'");
if(mysqli_num_rows($proverka) > 0) {
$rezultat++;
}
}
echo $rezultat;
}
您正在处理一个简单的数组,作为JSON发送。你想解码它,然后从那里开始
$data = json_decode($niza_glavna, TRUE);
$ids = array_keys($data);
$vals = array_values($data);
以上内容将获取单独数组中的键和值,您只需在查询中按如下方式运行即可:
$proverka = mysqli_query($kon, "SELECT * FROM prasanja WHERE id IN (" . implode(',', $ids) . ") AND tocenodgovor IN (" . implode(',', $vals) . ")");
这消除了任何循环和多个查询的需要。将对象作为JSON传递,并在服务器端使用
JSON\u decode($JSON,true)
。如果您提供发布的数据示例,人们会更容易帮助您。为什么需要先编码,然后解码?如果将其作为json字符串,只需单独解码,然后在PHP中只需简单的平面数组,在if
语句之前或if
语句内部添加var\u dump($\u POST)
,然后将结果添加到此问题。否则,不清楚jQuery和PHP之间发生了什么。(注意:您说过“我如何处理这个数组”,但提供了一个javascript对象-我们需要看看PHP接收到了什么,以便为您提出的问题提供答案)根据我的经验,通过jQuery将对象作为数据
传递给jQuery会导致在$\u POST
中将其转换为键值对。。。在我看来,OP并没有证明通过AJAX收到了什么。@cale_b同意,答案主要基于OP在更新中提供的数据,他发布的JSON也似乎无效。他似乎在做一些有趣的事情
$proverka = mysqli_query($kon, "SELECT * FROM prasanja WHERE id IN (" . implode(',', $ids) . ") AND tocenodgovor IN (" . implode(',', $vals) . ")");