我正在嘗試在資料庫中插入一個陣列,但沒有運氣。這是我嘗試過的。
我正在使用 post 方法從表單中獲取資料。
if(isset($_POST['submit'])){
$type = $_POST['type'];
$color = $_POST['color'];
$thicknes = $_POST['thicknes'];
$fill = $_POST['fill'];
$thickness_2 = $_POST['thickness_2'];
$quantity = $_POST['quantity'];
$email = $_POST['email'];
}
這是每個變數的轉儲
var_dump($type) //outputs -> array(3) { [0]=> string(21) "VALUE1" [1]=> string(13) "VALUE2" [2]=> string(21) "VALUE3" }
var_dump($color) //outputs -> string(9) "#TEST1" [1]=> string(9) "#TEST2" [2]=> string(9) "#TEST3" }
var_dump($thicknes) //outputs -> string(2) "40" [1]=> string(2) "30" [2]=> string(2) "30" }
var_dump($fill) //outputs -> string(3) "55" [1]=> string(3) "66" [2]=> string(3) "77" }
var_dump($thickness_2) //outputs -> string(3) "0.4" [1]=> string(3) "0.3" [2]=> string(3) "0.3" }
var_dump($quantity) //outputs -> string(3) "500" [1]=> string(3) "555" [2]=> string(3) "999" }
var_dump($email) //outputs -> string(13) "[email protected]" }
}
我的資料庫
ID | TYPE | COLOR | FILL | THICNKES_2 | QUANTITY | EMAIL
第一個事務應該是每個陣列的第一個元素。第二個應該是每個陣列中的第二個元素......
1 | VALUE1 | TEST1 | 40 | 55 | 500 | [email protected]
插入的所有行的電子郵件應該相同。
我試圖通過創建嵌套的 foreach 來插入它,但它不起作用。它只插入一行。
foreach($type as $t){
foreach($color as $c){
foreach($thicknesas $tt){
foreach($fill as $f){
foreach($quantity as $q){
foreach($emailas $e){
// query
}
}
}
}
}
}
uj5u.com熱心網友回復:
還使用鍵遍歷一個陣列,并從其他陣列中獲取該鍵下的值:
foreach($type as $key => $t) {
// insert into db values: ($t, $color[$key], $thicknes[$key], $fill[$key] etc)
}
uj5u.com熱心網友回復:
嵌套陣列不是這樣做的方法。
根據您的問題,您將獲得具有 3 個資料元素的陣列。所以你可以遍歷一個陣列并插入資料。您可以使用陣列索引從其他陣列中獲取資料。
for ($i = 0; $i < count($type); $i ){
// here comes the insert query
// insert into 'YOUR_TABLE' (TYPE,COLOR,FILL,THICNKES_2,QUANTITY,EMAIL) values($type[$i],$color[$i],$fill[$i],$thickness_2[$i],$quantity[$i],$email);
}
uj5u.com熱心網友回復:
其他答案是正確的,但促進了極其不安全的資料庫實踐。在回圈外準備陳述句將提高安全性和性能。假設您正在使用 PDO:
/** @var PDO $db */
$stmt = $db->prepare("INSERT INTO `some_table` SET `type`=?, `color`=?, `thicknes_2` = ?, `quantity` = ?, `email` = ?");
for ($i = 0; $i < count($type); $i ) {
$stmt->execute([$type[$i], $color[$i], $thickness_2[$i], $quantity[$i], $email]);
}
如果您更仔細地設計 HTML,它確實會使事情更容易處理。你可能會使用這樣的東西:
<form>
<input name="type[]"/>
<input name="color[]"/>
<input name="thickness_2[]"/>
<input name="quantity[]"/>
<input name="type[]"/>
<input name="color[]"/>
<input name="thickness_2[]"/>
<input name="quantity[]"/>
<input name="email"/>
</form>
通過簡單地將輸入添加到同一個子陣列,您可以使您的 PHP 更簡單。
<form>
<input name="items[0][type]"/>
<input name="items[0][color]"/>
<input name="items[0][thickness_2]"/>
<input name="items[0][quantity]"/>
<input name="items[1][type]"/>
<input name="items[1][color]"/>
<input name="items[1][thickness_2]"/>
<input name="items[1][quantity]"/>
<input name="email"/>
</form>
現在您的 PHP 可能如下所示:
/** @var PDO $db */
$stmt = $db->prepare("INSERT INTO `some_table` SET `type`=?, `color`=?, `thicknes_2` = ?, `quantity` = ?, `email` = ?");
foreach ($_POST["items"] as $item) {
$stmt->execute($item);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/370091.html
標籤:php
下一篇:PHPPUT方法Slim框架
