Php 在我的数组中使用INSERT INTO的正确方法
我目前正在使用以下插入到:Php 在我的数组中使用INSERT INTO的正确方法,php,mysql,arrays,Php,Mysql,Arrays,我目前正在使用以下插入到: $sql= "INSERT INTO orders (Orderdatum, Naam, Woonplaats, Straatnaam, Huisnummer, Telefoon, Aantal, Prijs) VALUES (now(), '$_POST[naam]','$_POST[woonplaats]','$_POST[straatnaam]','$_POST[huisnummer]','$_POST[telefoonnummer]', '
$sql= "INSERT INTO orders (Orderdatum, Naam, Woonplaats, Straatnaam, Huisnummer, Telefoon, Aantal, Prijs)
VALUES (now(), '$_POST[naam]','$_POST[woonplaats]','$_POST[straatnaam]','$_POST[huisnummer]','$_POST[telefoonnummer]', '$total_number', '$total_price')
";
mysql_query($sql);
以及:
将客户订单信息放在一个表中,将订购的产品放在另一个表中。以正确的顺序
这是正常的。但是有人告诉我第二段代码,foreach的
因为从长远来看,如果我添加更多的值并生成更大的数组,就会出现问题
所以我想知道使用这个foreach
的正确方法是什么
别误会,我的代码正常工作,没有问题。但有人告诉我这不是正确的方法试试这个:
$InsertData = array();
$Last_Insert_Id = mysql_insert_id();
foreach ($products as $key => $product){
$number = isset($_POST[$key])?$_POST[$key]:'';
if ($number > 0){
$InsertData[] = "('{$Last_Insert_Id}', '{$product}', '{$number}')";
}
}
$sql2 = "INSERT INTO ordered_products (Ordernr, Product, Aantal)
VALUES " . implode(", ", $InsertData) . " ";
mysql_query($sql2);
这将是一个很好的起点,你能告诉我为什么这是更好的方法吗,因为据我所知,这似乎与我最初的方法没有什么不同foreach@Farewyth因为在循环中插入会导致到数据库的多次往返,并且脚本的速度会大大降低。好的,这是有意义的。但它是否完全超过了我的剧本?或者我应该从现在开始使用这种脚本,即使它有点像我的示例中的数组?最多11个产品。@Farewyth,它可以是任意数量的数据数组,单次插入查询更好。
$InsertData = array();
$Last_Insert_Id = mysql_insert_id();
foreach ($products as $key => $product){
$number = isset($_POST[$key])?$_POST[$key]:'';
if ($number > 0){
$InsertData[] = "('{$Last_Insert_Id}', '{$product}', '{$number}')";
}
}
$sql2 = "INSERT INTO ordered_products (Ordernr, Product, Aantal)
VALUES " . implode(", ", $InsertData) . " ";
mysql_query($sql2);