存储在数组中并插入不同的字段名称

时间:2017-07-24 09:59:57

标签: php mysql arrays mysqli

我试图在数组中存储$ _POST值,但我的输入字段有不同的名称,当我插入时只插入一个字段。

这是我的PHP代码。

<?php
 $conn = new mysqli("localhost","root","","invoice");

 if (isset($_POST['submit'])) {

    $des = $_POST['describe'];
    $qty = $_POST['quantity'];
    $rate = $_POST['rate'];

    $array = array($des, $qty, $rate);
        foreach ($array as $key => $value) {

        $sql = "INSERT INTO `product_description`(`product`, `quantity`, `rate`) VALUES ('".implode('","', $value)")";
        $conn->query($sql);
    }
} 
?>

我是php语言的新手所以请任何人帮我在数组中存储多个字段值并运行插入查询?

5 个答案:

答案 0 :(得分:0)

而不是使用foreach尝试这样

  $sql = "INSERT INTO `product_description`(`product`, `quantity`, `rate`) 
          VALUES ('".$array[0]."','".$array[1]."','".$array[2]."')";
      $conn->query($sql);

答案 1 :(得分:0)

1st:,因为您的输入是数组所以。您需要使用for循环来获取each row记录

第二名:使用prepared statement来避免sql injection

<?php
 $conn = new mysqli("localhost","root","","invoice");

 if (isset($_POST['submit'])) {

    for($i=0;$i<count($_POST['describe']);$i++){

    $stmt = $conn->prepare("INSERT INTO `product_description` (`product`, `quantity`, `rate`) VALUES (?,?,?)");
    $stmt->bind_param('sss',$_POST['describe'][$i],$_POST['quantity'][$i],$_POST['rate'][$i]);
    $stmt->execute();
    $row_count = $stmt->affected_rows;

    if($row_count>0){

         echo "data inserted";

     }else{

        echo "data inserted";

      } 

   }


    }

?>

答案 2 :(得分:0)

你不需要进行内爆或预告。当您提交表单并使用getpost获得结果时,您可以看到结果已经是数组形式。

我建议您使用bindparam。您的查询对sql injection开放。

试试这个:

<?php
 $conn = new mysqli("localhost","root","","invoice");
 if (isset($_POST['submit'])) {
    explode($_POST);
    $sql = "INSERT INTO `product_description`(`product`, `quantity`, `rate`) VALUES ('$describe,$quantity,$rate')";
    $conn->query($sql);
 } 
?>

答案 3 :(得分:0)

试试这个

if (isset($_POST['submit'])) {
    foreach($_POST['describe'] as $key=>$row){
    $stmt = $conn->prepare("INSERT INTO `product_description` (`product`, `quantity`, `rate`) VALUES (?,?,?)");
    $stmt->bind_param('sss',$row,$_POST[$key]['quantity'],$_POST[$key]['rate']);
    $stmt->execute();
    $row_count = $stmt->affected_rows;

    if($row_count>0){
         echo "data inserted";
     }
   }
  }

答案 4 :(得分:0)

首先是否需要将值放在数组中?只需将您的查询更改为此并执行它

"INSERT INTO ´product_description´(´product´, ´quantity´, ´rate´) VALUES($des, $qty, $rate)";

删除所有foreach和数组创建语句