【问题标题】:Saving JS nested array from localStorage to MySQL table using PHP使用 PHP 将 JS 嵌套数组从 localStorage 保存到 MySQL 表
【发布时间】:2019-01-07 14:41:53
【问题描述】:

我正在将数组推送到 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);
      });
}

saveAnnotations.php

<?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 数据库和表的连接非常完美。当我硬编码每个字段的值时,数据会更新到表中。我认为问题在于将数组从 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();


}

【问题讨论】:

  • 你可以尝试转义查询中的值吗?
  • $annArray 的值是多少?
  • @NarayanSharma annArray 的值为空白,$lsData 的值为Array,而不是我看到的 var coords 数据。

标签: javascript php mysql arrays local-storage


【解决方案1】:

试试这个并粘贴 $annArray 的输出

$connect = mysqli_connect($hostname, $username, $password,$database);
$lsData = isset($_POST['data'])?$_POST['data']:'';
$annArray = json_decode(json_encode($lsData, true), true);

【讨论】:

  • 谢谢...$annArray 的输出是Array - 但是当我尝试将 $annArray 插入数据库时​​,我可以插入第一个数组。我必须在 $annArray 上使用 forloop 吗?
  • 请粘贴 $annArray 的整个输出。我知道这是数组,但我需要所有输出。使用 echo '
    '; print_r($annArray);
  • $annArray 的输出如下: Array ( [0] => STAR_SPORTS_2-20170924-200043-210917-00142.jpg [1] => PerimeterBoard [2] => Jupiter [3] => 236 [4] => 353 [5] => 292 [6] => 319 [7] => 312 [8] => 362 [9] => STAR_SPORTS_2-20170924-200043-210917-00142.jpg [ 10] => T 恤 [11] => 红移 [12] => 268 [13] => 410 [14] => 381 [15] => 398 [16] => 381 [17] => 469
  • 虽然列表很长...我只打印了前两个数组...但是格式和顺序是相同的,键值扩展为 71,这是最后一个值,后面跟着一个结束括号)
  • 这是一维数组。告诉我你想从哪里拆分这些数据?您要存储在哪个多个信息中?你错过了什么。
猜你喜欢
  • 1970-01-01
  • 2014-09-02
  • 2011-12-05
  • 1970-01-01
  • 2010-12-31
  • 2015-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多