php - 如何通过一次提交将多行插入数据库

标签 php mysql

<分区>

这里的任何人都可以帮助我如何使用 PHP 通过一次提交将多行插入到数据库中?我试过这样做,但它只插入一行。

这是我的代码:

<?php
if(isset($_POST['insertData']))
{
   $pred1 =$_POST['pre']; 
    $np1 =$_POST['nap']; 
    $sd101 =$_POST['tdisease'];
    $pr1 =$_POST['pric1'];  
    $ivd =$_POST['invd'];
    $id =$_POST['user'];

     $pred1 =$_POST['pre1']; 
    $np1 =$_POST['nap1']; 
    $sd101 =$_POST['tdisease1'];
    $pr1 =$_POST['pric1'];

     $pred2 =$_POST['pre2']; 
    $np2 =$_POST['nap2']; 
    $sd102 =$_POST['tdisease2'];
    $pr2 =$_POST['pric2'];



      $insert_user="INSERT INTO invoices(id, icd10, nappi_code, prescription, price, invoice_date, pid) VALUES ('','$sd10', '$np' ,'$pred','$pr','$ivd','$id');";
       $insert_user .="INSERT INTO invoices(id, icd10, nappi_code, prescription, price, invoice_date, pid) VALUES ('','$sd101', '$np1' ,'$pred1','$pr1','$ivd','$id');";
        $insert_user .="INSERT INTO invoices(id, icd10, nappi_code, prescription, price, invoice_date, pid) VALUES ('','$sd102', '$np2' ,'$pred2','$pr2','$ivd','$id')";


    if(mysqli_query($con,$insert_user))
    {  
        echo"<script>alert(' Invoice Details successfuly added to database')</script>";
        echo '<meta content="1;generate-invoive-results-date-report.php?id='.$id.'" http-equiv="refresh" />';// redirects user view page after 3    
    }else{  
        echo"<script>alert('Unknown error occured')</script>";   
  } 
}
?>

最佳答案

也许你应该试试这个:

$insert_user="INSERT INTO invoices(id, icd10, nappi_code, prescription, price, invoice_date, pid) VALUES ('','$sd10', '$np' ,'$pred','$pr','$ivd','$id'),('','$sd101', '$np1' ,'$pred1','$pr1','$ivd','$id'), ('','$sd102', '$np2' ,'$pred2','$pr2','$ivd','$id')";

还有,这个:

$pred1 =$_POST['pre']; 
$np1 =$_POST['nap']; 
$sd101 =$_POST['tdisease'];
$pr1 =$_POST['pric1'];  
$ivd =$_POST['invd'];
$id =$_POST['user'];

$pred1 =$_POST['pre1']; 
$np1 =$_POST['nap1']; 
$sd101 =$_POST['tdisease1'];
$pr1 =$_POST['pric1'];

$pred2 =$_POST['pre2']; 
$np2 =$_POST['nap2']; 
$sd102 =$_POST['tdisease2'];
$pr2 =$_POST['pric2'];

应该是:

$ivd =$_POST['invd'];
$id =$_POST['user'];

$pred =$_POST['pre']; 
$np =$_POST['nap']; 
$sd10 =$_POST['tdisease']; <== 
$pr =$_POST['pric1'];  


$pred1 =$_POST['pre1']; 
$np1 =$_POST['nap1']; 
$sd101 =$_POST['tdisease1'];
$pr1 =$_POST['pric1'];

$pred2 =$_POST['pre2']; 
$np2 =$_POST['nap2']; 
$sd102 =$_POST['tdisease2'];
$pr2 =$_POST['pric2'];

因为前两组变量名相同,会被覆盖。

======================编辑======================== ===

之前它对你不起作用的原因可能是因为:

1) 第一个查询中不存在变量 '$sd10', '$np' ,'$pred','$pr':

$insert_user="INSERT INTO invoices(id, icd10, nappi_code, prescription, price, invoice_date, pid) VALUES ('','$sd10', '$np' ,'$pred','$pr','$ivd','$id');";

2) 第三个查询末尾没有;:

VALUES ('','$sd102', '$np2' ,'$pred2','$pr2','$ivd','$id')<no-semi-colon-here>";

因为它们作为 3 个单独的查询插入。

A query need not be given all on a single line, so lengthy queries that require several lines are not a problem. mysql determines where your statement ends by looking for the terminating semicolon, not by looking for the end of the input line. (In other words, mysql accepts free-format input: it collects input lines but does not execute them until it sees the semicolon.)

引用:https://dev.mysql.com/doc/refman/5.7/en/entering-queries.html

关于php - 如何通过一次提交将多行插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42243295/

相关文章:

php - 获取 PDF 文档的页数

php - Luracast ReSTLer 身份验证

mysql - 表名指定两次,既作为更新目标又作为单独的数据源

php - csv 未使用 laravel 上传到数据库

php - mysql_query -> mysql_fetch_array 只返回最后一个输入行

mysql 从列名等于的表中选择

mysql - MySQL程序错误

php - 回显表单数据?

PHP 循环 : Bootstrap Slider Add div with item class every 3 item and the first one will have active

php - __toString 问题