localstorage存mysql_使用PHP将JS嵌套数组从localstorage保存到mysql表中

本文介绍了如何将JavaScript本地存储的嵌套数组通过AJAX发送到PHP,然后使用PHP解析并分块插入MySQL数据库的流程。遇到的问题在于正确地解码和拆分数组以匹配数据库表结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我正在将数组推送到localstorage,单击按钮后,我想将其存储在mysql表中。

var coords = JSON.parse(localStorage.getItem('coords'));

var coords为我提供了以下输出:

["STAR_SPORTS_2-20170924-200043-210917-00142.jpg", "PerimeterBoard", "Jupiter", 236, 353, 292, 319, 312, 362, "STAR_SPORTS_2-20170924-200043-210917-00142.jpg", "TShirt", "Redshift", 268, 410, 381, 398, 381, 469, "STAR_SPORTS_2-20170924-200043-210917-00142.jpg", "Mic", "Airtel", 317, 327, 425, 329, 421, 371, "STAR_SPORTS_2-20170924-200043-210917-00142.jpg", "Mic", "Airtel", 575, 300, 575, 300, 626, 282]

我使用以下函数将此数组推送到一个PHP文件:

function dbSave(e) {

e.preventDefault();

var coords = JSON.parse(localStorage.getItem('coords'));

$.post("saveAnnotations.php", {'data' : coords }, function(output){

alert(output);

});

}

保存注释.php

$connect = mysqli_connect($hostname, $username, $password,$database);

$lsData = isset($_POST['data'])?$_POST['data']:'';

$annArray = json_decode($lsData, true);

$image = $annArray[0];

$location = $annArray[1];

$brand = $annArray[2];

$firstX = $annArray[3];

$firstY = $annArray[4];

$secondX = $annArray[5];

$secondY = $annArray[6];

$thirdX = $annArray[7];

$thirdY = $annArray[8];

$sql = "INSERT into `annotations` (`matchName`, `imagename`, `locationName`, `brandname`, `firstx`, `firsty`, `secondx`,`secondy`, `thirdx`,`thirdy`) values

('$matdir','$image', '$location','$brand','$firstX','$firstY','$secondX','$secondY','$thirdX','$thirdY');";

$result = mysqli_query($connect, $sql) or die(mysqli_error($connect));

if ($result) {

echo "Data uploaded Successfully";

}

$connect->close();

?>

到mysql db和table的连接是完美的。当我硬编码每个字段的值时,数据会更新到表中。我认为问题在于将数组从localstorage发布到php,并在php端对其进行解码。

$annArray = json_decode(json_encode($lsData, true), true);

$countArray = count($annArray);

$interval = $countArray/9;

function fill_chunck($array, $parts) {

$t = 0;

$result = array_fill(0, $parts - 1, array());

$max = ceil(count($array) / $parts);

foreach($array as $v) {

count($result[$t]) >= $max and $t ++;

$result[$t][] = $v;

}

return $result;

}

//echo print_r(fill_chunck($annArray, $interval));

$inputArray = [];

$inputArray = fill_chunck($annArray, $interval);

foreach($inputArray as $value=>$data) {

$image = $data[0];

$location = $data[1];

$brand = $data[2];

$firstX = $data[3];

$firstY = $data[4];

$secondX = $data[5];

$secondY = $data[6];

$thirdX = $data[7];

$thirdY = $data[8];

$sql = "INSERT into `annotations` (`imagename`, `locationName`, `brandname`, `firstx`, `firsty`, `secondx`,`secondy`, `thirdx`,`thirdy`) values

('$image', '$location','$brand','$firstX','$firstY','$secondX','$secondY','$thirdX','$thirdY');";

$result = mysqli_query($connect, $sql) or die(mysqli_error($connect));

if ($result) {

echo "Data uploaded Successfully";

}

$connect->close();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值