在php中将关联数组插入MySQL数据库

时间:2016-12-23 10:51:23

标签: php mysql

我有一个名为$output的数组,其中包含:

Array
(
    [0] => Array
        (
            [0] => J Arora
            [1] =>  India
        )

    [1] => Array
        (
            [0] => J Ramuj
            [2] =>  Russia
        )

    [2] => Array
        (
            [1] =>  KJ Tris
            [2] =>  Germany
        )

)

如何将这些数据插入到像这些

这样的mysql数据库表中
---------------
name   | country
-------|---------
J Arora|India
-------|--------
J Ramuj|Russia
-------|--------
KJ Tris|Germany
-------|--------

我无法从给定数组中单独获取这些值,因为它们的索引不是按顺序排列的。

5 个答案:

答案 0 :(得分:4)

只需使用foreach循环它,并使用PHP本机函数(如current()end())来获取元素。鉴于您的阵列中始终只有两个元素,这应该可以正常工作

foreach ($output as $v) {
    echo current($v); // Name
    echo end($v); // Country
}

调整它以构建查询并在循环内执行它。在循环内你可以做到

foreach ($output as $v) {
    $sql = "INSERT INTO table (`name`, `country`) VALUES ('".current($v)."', '".end($v)."')";
    // TODO: Execute query
}

您还应注意,使用变量的任何查询都应使用带有占位符的预准备语句。 MySQLi和PDO都支持这一点。

使用预准备语句

之前构建查询,并在使用适当的变量绑定循环时执行它。

PDO示例:

$stmt = $pdo->prepare("INSERT INTO table (`name`, `country`) VALUES (:name, :country)");
foreach ($output as $v) {
    $stmt->execute(array("name" => current($v), "country" => end($v));
}

MySQLi示例:

$stmt = $mysqli->prepare("INSERT INTO table (`name`, `country`) VALUES (?, ?)");
foreach ($output as $v) {
    $name = current($v);
    $country = end($v);
    $stmt->bind_param("ss", $name, $country);
    $stmt->execute();
}

答案 1 :(得分:0)

让我们调用你的数组user_details

foreach($user_detail as $single_user){
       $i = 0;
       foreach($single_user as $user){
           if($i==0){
             $name = $user;
           } else {
            $country = $user;
           } $i++;
       }
     $sql_query = INSERT into 'Table'($name, $country);
     //Execute this query as per mysqli or or mysql

}

//考虑第一个值始终是名称,第二个值始终是国家/地区名称

答案 2 :(得分:0)

for (int i=0; i < list_value_geojson.size(); i++){
    Map.Entry<Double, GeoJsonSource> entry = list_value_geojson.get(i);
    if (mapboxMap != null && entry != null) {
        mapboxMap.addSource(entry.getValue());
        FillLayer fillLayer = new FillLayer(entry.getValue().getId(), entry.getValue().getId());
        fillLayer.setProperties(PropertyFactory.fillColor(Color.parseColor(hashMap    Colors.get(entry.getKey()))));
    mapboxMap.addLayer(fillLayer);

    }
}

现在执行$sql = "INSERT INTO tablename(name,country) VALUES"; for($i=0;$i<sizeof($myarray);$i++){ $sql.="(".$myarray[0].",".$myarray[1].")"; }

答案 3 :(得分:0)

for ($a=0; $a<count($array); $i++) {
    $dataArray=array_values($array[$i]);
    for ($j=0; $j<count($dataArray); $j++) {

        $name=$dataArray[0];
        $country=$dataArray[1];
        $insert_query="insert into tablename set name='$name', country='$country'";
        $res_query=mysql_query($insert_query);
    }
}

希望这对你有用。

答案 4 :(得分:0)

这可能会有所帮助。它没有经过测试。

$query = "INSERT into 'your table name' ('name', 'country') VALUES ";
foreach($yourArray as $data) {
    foreach($data as $d) {
       $query .= "('.$d[0].','.$d[1]),";
   }
}

$query = substr($query, 0, -1); // To remove last comma from query string

然后你可以执行这个查询。