[英]Get right data in Foreach loop inside For loop
我需要插入多個帶有選定子類別的商店,在一個表中插入商店數據,然后在第二個表中插入子類別。 當我使用“ for”循環中的“ foreach”循環執行此操作時,相同的子類別數據將插入n次(具體取決於有多少家商店)。 當我將foreach循環置於for循環之外時,$ md5c唯一ID僅插入第一個。 如何解決?
$input_count = count($_POST['npm']);
for ($i = 0; $i < $input_count; $i++) {
$a = uniqid(about);
$b = uniqid (about, true);
$c = uniqid (rand(), true);
$md5c = md5($c);
$n = mysql_real_escape_string($_POST['npm'][$i]);
$a = mysql_real_escape_string($_POST['apm'][$i]);
$c = mysql_real_escape_string($_POST['mipm'][$i]);
$wh = mysql_real_escape_string($_POST['rv'][$i]);
$t = mysql_real_escape_string($_POST['ktf'][$i]);
$mob = mysql_real_escape_string($_POST['ktm'][$i]);
$mail = mysql_real_escape_string($_POST['kea'][$i]);
$con = mysql_real_escape_string($_POST['ipko'][$i]);
$query2 = "INSERT INTO shops (id, n, a, c, wh, tel, mob, mail, con) VALUES ('$md5c', '$n','$a','$c','$wh','$t','$mob','$mail','$con')";
$rs2=mysql_query($query2) or die(mysql_error());
foreach ( $_POST['subcat'] as $key=>$value ) {
$values = mysql_real_escape_string($value);
$query3="INSERT INTO sc (subcat_id,shop_id) VALUES ($values,'$md5c')";
$rs3=mysql_query($query3) or die(mysql_error());
}
}
您可以嘗試將$ values存儲在新數組中
因此,在這兩個循環之前,您必須定義$ md5cArray = [],然后開始第一個循環,將每個值存儲在數組中,例如$ md5cArray [] = md5c;。
使用相同的結構在第一個循環之外開始第二個循環,由於數組已排序,因此您可以執行以下操作:
在第二個循環中:
for ($i = 0; $i < sizeof($_POST['subcat']); $i++) {
$values = mysql_real_escape_string($value);
$query3="INSERT INTO sc (subcat_id,shop_id) VALUES ({$_POST['subcat'][inner][second-inner]}, {$md5c[$i]})";
$rs3 = mysql_query($query3) or die(mysql_error());
}
您必須將值中的第一個元素編輯為正確的結構。
您的最終代碼應如下所示
$input_count = count($_POST['npm']);
$md5cArray = [];
for ($i = 0; $i < $input_count; $i++) {
$a = uniqid(about);
$b = uniqid (about, true);
$c = uniqid (rand(), true);
$md5c = md5($c);
$md5cArray[] = md5($c); // new array
$n = mysql_real_escape_string($_POST['npm'][$i]);
$a = mysql_real_escape_string($_POST['apm'][$i]);
$c = mysql_real_escape_string($_POST['mipm'][$i]);
$wh = mysql_real_escape_string($_POST['rv'][$i]);
$t = mysql_real_escape_string($_POST['ktf'][$i]);
$mob = mysql_real_escape_string($_POST['ktm'][$i]);
$mail = mysql_real_escape_string($_POST['kea'][$i]);
$con = mysql_real_escape_string($_POST['ipko'][$i]);
$query2 = "INSERT INTO shops (id, n, a, c, wh, tel, mob, mail, con) VALUES ('$md5c', '$n','$a','$c','$wh','$t','$mob','$mail','$con')";
$rs2=mysql_query($query2) or die(mysql_error());
}
for ($i = 0; $i < sizeof($_POST['subcat']); $i++) {
$values = mysql_real_escape_string($value);
$query3="INSERT INTO sc (subcat_id, shop_id) VALUES ("{$_POST['subcat'][$i]}","{$md5c[$i]}")";
$rs3=mysql_query($query3) or die(mysql_error());}
使用foreach($ _POST ['subcat'] [$ i] as $ key => $ value){
$input_count = count($_POST['npm']);
for ($i = 0; $i < $input_count; $i++) {
$a = uniqid(about);
$b = uniqid (about, true);
$c = uniqid (rand(), true);
$md5c = md5($c);
$n = mysql_real_escape_string($_POST['npm'][$i]);
$a = mysql_real_escape_string($_POST['apm'][$i]);
$c = mysql_real_escape_string($_POST['mipm'][$i]);
$wh = mysql_real_escape_string($_POST['rv'][$i]);
$t = mysql_real_escape_string($_POST['ktf'][$i]);
$mob = mysql_real_escape_string($_POST['ktm'][$i]);
$mail = mysql_real_escape_string($_POST['kea'][$i]);
$con = mysql_real_escape_string($_POST['ipko'][$i]);
$query2 = "INSERT INTO shops (id, n, a, c, wh, tel, mob, mail, con) VALUES ('$md5c', '$n','$a','$c','$wh','$t','$mob','$mail','$con')";
$rs2=mysql_query($query2) or die(mysql_error());
foreach ( $_POST['subcat'][$i] as $key => $value ) {
$values = mysql_real_escape_string($value);
$query3="INSERT INTO sc (subcat_id,shop_id) VALUES ($values,'$md5c')";
$rs3=mysql_query($query3) or die(mysql_error());
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.