2017-05-31 78 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