【发布时间】: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。请考虑切换到MySQLi 或PDO,确保您也使用parameterised queries 来防止SQL 注入:) -
首先,不要使用 mysql_query,使用 mysqli 或 PDO 并将你的查询字符串参数化,这样你就不会受到 SQL 注入的影响。
-
我将 $POST 更正为 $_POST 但仍然出现错误
标签: javascript php json ajax