2017-05-31 77 views
0

如何在mysql上存储multidimensional数组?我有以下代码,使用多维数组在Mysql上复制数据存储

if (isset($_POST['submit'])) { 

    echo "<pre>"; var_dump($_POST); echo "</pre>"; 

    $nama = $_POST['nama']; 
    $age = $_POST['age']; 
    $array = array('nama' => $nama, 'age' => $age); 

} 

就会产生:

array(6) { 
    ["nama"]=> 
    array(2) { 
    [0]=> 
    string(6) "batman" 
    [1]=> 
    string(9) "spiderman" 
    } 
    ["age"]=> 
    array(2) { 
    [0]=> 
    string(2) "40" 
    [1]=> 
    string(2) "35" 
    } 
} 

存储到MySQL:

require_once('db_connection/connection.php'); 

foreach ($array as $key => $value) { 
    $stmt = $conn->prepare("INSERT INTO tanggungan (name, age) VALUES (?, ?)"); 
    $stmt->bind_param("ss", $nama, $age); 

    foreach ($value as $index => $value) { 
     $nama = $array['nama'][$index]; 
     $age = $array['age'][$index]; 
    } 

    $stmt->execute(); 
} 

echo "New records created successfully"; 

$stmt->close(); 
$conn->close(); 

我有谷歌对此并拿出上面的代码,但它会复制下面的数据,

id | name  | age 
------------------- 
1 | batman | 40 
2 | batman | 40 
3 | spiderman | 35 
4 | spiderman | 35 

道歉,如果我错误地使用它或不是最佳做法。仍在使用网络编程学习。

回答

1

这是一个更好的方式来做到这一点:

require_once('db_connection/connection.php'); 

for ($i = 0; $i < count($array); $i++) { 

    $stmt = $conn->prepare("INSERT INTO tanggungan (name, age) VALUES (?, ?)"); 
    $stmt->bind_param("ss", $array['nama'][$i], $array['age'][$i]); 

    $stmt->execute(); 
    $stmt->close(); 
} 

echo "New records created successfully"; 
$conn->close(); 
+0

可我知道为什么我收到一个错误'执行失败:(1048)列“名称”不能null'但数据是在MySQL店。是因为for循环吗? – Amran

+0

您是否向阵列添加了另一个密钥? – styl3r