簡體   English   中英

如何使用 Ajax 向 PHP 發送對象數組並更新 MySQL 服務器

[英]How to send an array of objects to PHP with Ajax and update the MySQL server

我有這個對象數組:

var desks = [];

function Desk(id, name, x, y) {
    var desk = {};
    desk.id = id;
    desk.name = name;
    desk.x = x;
    desk.y = y;
    desks.push(desk);
}

我有一個 MySQL 表,其中包含desk_iddesk_namedesk_xdesk_y列。 當我單擊一個按鈕時,我想用 Desk 對象更新表中的值。

這基本上是我想要實現的目標:

JS

$("#btn").click(function() {
    $.ajax({
        method: "POST",
        url: "phpfile.php",
        data: desks
    })
});

PHP

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    require "../db.php";

    $conn = new mysqli($servername, $username, $password, $dbname);

    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 

    $desks = $_POST("desks");
    for($i = 0; $i < sizeof($desks); $i++) {
        $sql = "UPDATE desks SET desk_x=$desks[i]->x WHERE desk_id=$desks[i]->id";
        $conn->query($sql);
        $sql = "UPDATE desks SET desk_y=$desks[i]->y WHERE desk_id=$desks[i]->id";
        $conn->query($sql);
    }
    $conn->close();
}
?> 

我不知道它有什么問題。 任何幫助表示贊賞。

這樣做
JS

$("#btn").click(function() {
    $.ajax({
        method: "POST",
        url: "phpfile.php",
        data: {desks:desks}
    })
});

PHP

$desks = $_POST("desks");
$sql = "UPDATE desks SET desk_x=$desks->x,desk_y=$desks->y WHERE desk_id=$desks->id";
$conn->query($sql);

發送時需要對數組進行字符串化。

JS

$("#btn").click(function() {
    $.ajax({
        method: "POST",
        url: "phpfile.php",
        data: { "desks" : JSON.stringify(desks) }
    })
});

PHP

$desks = json_decode($_POST["desks"]);

foreach($desks as $key => $value) {
    $sql = "UPDATE desks SET desk_x=".$value->x.",desk_y=".$value->y." WHERE desk_id=".$value->id;
    $conn->query($sql);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM