Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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
Javascript 如何在数据库PHP MYSQL中插入多行_Javascript_Php_Arrays_Mysqli - Fatal编程技术网

Javascript 如何在数据库PHP MYSQL中插入多行

Javascript 如何在数据库PHP MYSQL中插入多行,javascript,php,arrays,mysqli,Javascript,Php,Arrays,Mysqli,我需要发票输入的帮助 我需要一些关于使用php将具有不同值的多行插入数据库的帮助。我已经有了插入新行的按钮 以下是我的插入查询: $insert = "INSERT INTO subtrans (idproduk,namaproduk,harga,qty,sub) VALUES"; for ($i=0; $i < $count; $i++) { $insert .= "('{$idproduk[$i]}','{$namaproduk[$i]}'

我需要发票输入的帮助

我需要一些关于使用php将具有不同值的多行插入数据库的帮助。我已经有了插入新行的按钮

以下是我的插入查询:

  $insert     = "INSERT INTO subtrans (idproduk,namaproduk,harga,qty,sub) 
  VALUES";
      for ($i=0; $i < $count; $i++) {
        $insert .= "('{$idproduk[$i]}','{$namaproduk[$i]}','{$harga[$i]}','{$qty[$i]}','{$sub[$i]}')";
        $insert .= ",";
      }
    $insert = rtrim($insert,",");
    $sql = $con->query($insert);
$insert=“插入子交易(idproduk、namaproduk、harga、qty、sub)
价值观”;
对于($i=0;$i<$count;$i++){
$insert.=“({$idproduk[$i]}'、{$namaproduk[$i]}'、{$harga[$i]}'、{$qty[$i]}'、{$sub[$i]}'”;
$insert.=“,”;
}
$insert=rtrim($insert,“,”);
$sql=$con->query($insert);
这是我的HTML代码:

<tbody>
                  <tr>
                    <td><input class="case" type="checkbox"/></td>
                    <td><input type="text" data-type="idproduk" name="itemNo[]" id="itemNo_1" class="form-control form-control-sm autocomplete_txt" autocomplete="off"></td>
                    <td><input type="text" data-type="namaproduk" name="itemName[]" id="itemName_1" class="form-control form-control-sm autocomplete_txt" autocomplete="off"></td>
                    <td><input type="number" name="price[]" id="price_1" class="form-control form-control-sm changesNo" autocomplete="off" onkeypress="return IsNumeric(event);" ondrop="return false;" onpaste="return false;"></td>
                    <td><input type="number" name="quantity[]" id="quantity_1" class="form-control form-control-sm changesNo" autocomplete="off" onkeypress="return IsNumeric(event);" ondrop="return false;" onpaste="return false;"></td>
                    <td><input type="number" name="total[]" id="total_1" class="form-control form-control-sm totalLinePrice" autocomplete="off" onkeypress="return IsNumeric(event);" ondrop="return false;" onpaste="return false;"></td>
                  </tr>
                </tbody>

这是我的js代码:

//adds extra table rows
var i=$('table tr').length;
$(".addmore").on('click',function(){
 html = '<tr>';
 html += '<td><input class="case" type="checkbox"/></td>';
 html += '<td><input type="text" data-type="idproduk" name="itemNo[]" id="itemNo_'+i+'" class="form-control form-control-sm autocomplete_txt" autocomplete="off"></td>';
 html += '<td><input type="text" data-type="namaproduk" name="itemName[]" id="itemName_'+i+'" class="form-control form-control-sm autocomplete_txt" autocomplete="off"></td>';
 html += '<td><input type="text" name="price[]" id="price_'+i+'" class="form-control form-control-sm changesNo" autocomplete="off" onkeypress="return IsNumeric(event);" ondrop="return false;"onpaste="return false;"></td>';
 html += '<td><input type="text" name="quantity[]" id="quantity_'+i+'" class="form-control form-control-sm changesNo" autocomplete="off" onkeypress="return IsNumeric(event);" ondrop="return false;"  onpaste="return false;"></td>';
 html += '<td><input type="text" name="total[]" id="total_'+i+'" class="form-control form-control-sm totalLinePrice" autocomplete="off" onkeypress="return IsNumeric(event);" ondrop="return false;"  onpaste="return false;"></td>';
 html += '</tr>';
 $('table').append(html);
 i++;
 });
//添加额外的表行
变量i=$('table tr')。长度;
$(“.addmore”)。在('click',function()上{
html='';
html+='';
html+='';
html+='';
html+='';
html+='';
html+='';
html+='';
$('table').append(html);
i++;
});

仅就记录而言,我不认为这是解决此特定问题的最佳方法-更好的方法是使用
准备好的语句,该语句准备一次,然后每次使用不同的值在循环中多次执行。但是,下面生成了可行的sql(无论如何在测试中都没有)

如我所提到的,更好的方法是多次执行
prepared语句

$sql='insert into `subtrans` ( `idproduk`, `namaproduk`, `harga`, `qty`, `sub` ) values (?,?,?,?,?)';
$stmt=$con->prepare( $sql );
if( $stmt ){
    $stmt->bind_param('ssddd',$id,$name,$price,$qty,$total);

    foreach( $_POST['itemName'] as $i => $value ){
        $id=$_POST['itemNo'][ $i ];
        $name=$_POST['itemName'][ $i ];
        $price=$_POST['price'][ $i ];
        $qty=$_POST['quantity'][ $i ];
        $total=$_POST['total'][ $i ];

        $stmt->execute()
    }
}

你的问题是什么?我插入了数据,但没有插入多个数据,只有一个数据,所以第二个数据没有输入。你得到了什么错误?多个插入不起作用,只有一个数据输入到数据库。我没有收到任何错误消息。必须提供注释,可能是“您的sql有sql注入的风险”
$sql='insert into `subtrans` ( `idproduk`, `namaproduk`, `harga`, `qty`, `sub` ) values (?,?,?,?,?)';
$stmt=$con->prepare( $sql );
if( $stmt ){
    $stmt->bind_param('ssddd',$id,$name,$price,$qty,$total);

    foreach( $_POST['itemName'] as $i => $value ){
        $id=$_POST['itemNo'][ $i ];
        $name=$_POST['itemName'][ $i ];
        $price=$_POST['price'][ $i ];
        $qty=$_POST['quantity'][ $i ];
        $total=$_POST['total'][ $i ];

        $stmt->execute()
    }
}