Javascript 如何在数据库PHP MYSQL中插入多行
我需要发票输入的帮助 我需要一些关于使用php将具有不同值的多行插入数据库的帮助。我已经有了插入新行的按钮 以下是我的插入查询: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]}'
$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()
}
}