【问题标题】:php multidimensional array to mysql [closed]php多维数组到mysql [关闭]
【发布时间】:2016-02-10 16:37:21
【问题描述】:

我正在处理一个看起来像这样的多维数组

字符串

array(
  array(
[0] => 37.32830856
[1] => -122.01981483
[2] => 0x7fe48002b420<x-coredata:///Run/t061456B2-921C-41A0-BE37-B572DC61269C2603>
[3] => 2015-11-0920:30:25
[4] => 43594809345903485
  )

)

该数据库将有我需要填写的数据库中的以下列,

纬度 经度 核心数据 时间戳 unique_id

我知道我需要查看我的数据库,但我找不到任何告诉我该怎么做的东西。我的数组也可以有 10 到 200 个数组,它们都需要遍历它并将其存储在数据库中。

谁能告诉我这是怎么做到的。

谢谢!

【问题讨论】:

  • 您是在问应该如何构建数据库表,或者如何使用 PHP 插入到现有表中?
  • 您可能需要一个foreach loop 用于第一级数组,以便轻松访问第二级数组和prepared statement,尤其是“示例#3 INSERT 准备一次,执行多次”
  • 如果您不知道,第二级数组元素 23 可能会生成 PHP 错误
  • 我需要将它插入到mysql数据库中。所以我需要知道如何遍历数组,以便将其输入数据库。这对我来说有点太多了。我需要学习如何做到这一点。
  • 我尝试了很多解决方案,注意到工作,不,我宁愿学习它,这样我就知道我在做什么,并且可以在需要时再做一次。我也可以花一些钱来做这件事,但我需要了解正在发生的事情。示例代码是了解其工作原理的唯一方法。谢谢

标签: php mysql for-loop multidimensional-array


【解决方案1】:

假设 $mysqli 作为您的数据库连接,$outerArray 是包含数据数组的数组的名称,yourTable 作为您的表名,尝试类似

foreach ($outerArray as $innerArray) {
    $query = "INSERT INTO yourTable (latitude, longitude, coredata, time_stamp, unique_id)
      VALUES('{$innerArray[0]}','{$innerArray[1]}','{$innerArray[2]}','{$innerArray[3]}','{$innerArray[4]}')";
    $mysqli->query($query);

}

【讨论】:

  • 我要感谢每个人的帮助,我现在明白我正在寻找过于复杂的解决方案,但是这段小代码完成了工作并且很容易理解,因为我在工作中看到它。非常感谢。
【解决方案2】:

您可以使用以下命令一次性完成所有插入:

try {
    //Make your connection handler to your database
    $conn = new PDO("mysql:host=".$servername.";dbname=".$database, $username, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));

    $data = array(
        array('37.32830856', '-122.01981483', '0x7fe48002b420', '2015-11-0920:30:25', '43594809345'),
        array('42.32830856', '-10.01981483', 'adsfasd43345', '2015-10-0920:30:25', '454545151'),
    );

    $values = array(); //Prepared insert values
    $binds = array(); //Real values
    $i = 0;

    $temp = "INSERT INTO your_table VALUES ";

    foreach($data as $key => $value) {
        $values[] = ' (:latitude'.$i.', :longitude'.$i.', :coredata'.$i.', :time_stamp'.$i.', :unique_id'.$i.')';
        $binds[':latitude'.$i] = $value[0];
        $binds[':longitude'.$i] = $value[1];
        $binds[':coredata'.$i] = $value[2];
        $binds[':time_stamp'.$i] = $value[3];
        $binds[':unique_id'.$i] = $value[4];
        $i++;
    }
    $sql_query = $temp.implode(', ', $values).';'; //Create your sql_query for all your insertions

    echo $sql_query;
    var_dump($binds);

    $stmt = $conn->prepare($sql_query);
    $stmt->execute($binds);

} catch(PDOException $e) {
    echo $e->getMessage();
    die();
}

声明:

echo $sql_query;

结果:

INSERT INTO your_table VALUES 
(:latitude0, :longitude0, :coredata0, :time_stamp0, :unique_id0), 
(:latitude1, :longitude1, :coredata1, :time_stamp1, :unique_id1);

声明:

var_dump($binds);

结果:

array (size=10)
    ':latitude0' => string '37.32830856' (length=11)
    ':longitude0' => string '-122.01981483' (length=13)
    ':coredata0' => string '0x7fe48002b420' (length=14)
    ':time_stamp0' => string '2015-11-0920:30:25' (length=18)
    ':unique_id0' => string '43594809345' (length=11)
    ':latitude1' => string '42.32830856' (length=11)
    ':longitude1' => string '-10.01981483' (length=12)
    ':coredata1' => string 'adsfasd43345' (length=12)
    ':time_stamp1' => string '2015-10-0920:30:25' (length=18)
    ':unique_id1' => string '454545151' (length=9)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多