【问题标题】:retrieve json array from php json decode从 php json decode 中检索 json 数组
【发布时间】:2017-07-17 03:07:37
【问题描述】:

我有一个 javascript 来创建 json 数组,它有一个 ajax post 方法,我必须知道这个 json 数组应该如何在 php 端解码?

我的javascript函数:

var invoices = {invoice: [{ "customerName" : "John" ,"reciptionName" : "Doe" ,"datee" : "2017-09-09" ,"total" : tot }], invoiceLine: []};

    for(i=1; i<=count+arr.length-1; i++){

        var ss = String(i);
        if(arr.includes(ss)){
            continue;
        }
        invoices.invoiceLine.push({

            "itemName" : document.getElementById('item'+i).value ,
            "qty" : document.getElementById('inputQty'+i).value ,
            "value" : document.getElementById('value'+i).value
        });
    }

    $.ajax({
    type: "POST",
    url: "saveInvoice.php",
    data: {json : JSON.stringify(invoices)},
    cache: false,
    success: function(data) {
    alert(data);
    location.reload();
    }
    });

这是我的 php:(它不会将数据保存到数据库。我现在希望将第一个发票数据保存在数据库中。然后我可以使用 invoiveLine 数据插入另一个表。)

$dbhost = "localhost";
    $dbuser = "root";
    //$dbpass = "dbpassword";
    $dbname = "inventory";

    $jsonInvoice = json_decode($POST['invoices'],true);

    $customerName = $jsonInvoice.["invoice"][0].["customerName"];
    $reciptionName = $jsonInvoice.["invoice"][0].["reciptionName"];
    $date = $jsonInvoice.["invoice"][0].["datee"];
    $total = $jsonInvoice.["invoice"][0].["total"];



    mysql_connect($dbhost, $dbuser, '');

    mysql_select_db($dbname) or die(mysql_error());

    $query = "insert into invoice (customerName,reciptionName,date,total) values ('$customerName','$reciptionName','$date',$total)";

    $qry_result = mysql_query($query) or die(mysql_error());

    $insertId = mysql_insert_id();

    echo $insertId;

【问题讨论】:

  • $POST['invoices'] 看起来像什么?此外,mysql_ 构造函数是deprecated as of PHP 5.5,完全是removed in PHP 7。请考虑切换到MySQLiPDO,确保您也使用parameterised queries 来防止SQL 注入:)
  • 首先,不要使用 mysql_query,使用 mysqli 或 PDO 并将你的查询字符串参数化,这样你就不会受到 SQL 注入的影响。
  • 我将 $POST 更正为 $_POST 但仍然出现错误

标签: javascript php json ajax


【解决方案1】:

你可以试试这个:

$customerName = $jsonInvoice["invoice"][0]["customerName"];

我认为您遇到了由点引起的 sintax 错误。 json_decode 返回一个数组,你必须按照我上面写的方式访问属性。 (更多信息请参见this

另外,注意其他用户给你的关于 mysqli 的建议

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-15
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-02
    • 2020-02-18
    • 1970-01-01
    相关资源
    最近更新 更多