Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在我的数组中使用INSERT INTO的正确方法_Php_Mysql_Arrays - Fatal编程技术网

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);