dsvd407787736 2014-10-14 03:39
浏览 27
已采纳

无法让mysql数组重复执行每行执行的代码

im trying to query the database and apply code to each result and insert a record per result to a databse. This code works but only does it for the last result row. Ive tried foreach but cannot get it to work most likley because i dont understand how it should work. Please help and thank you

<?php
    if(isset($_POST['bill1'])){
        mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
        require ('dbconnect.php');
        // Check connection
        if (mysqli_connect_errno()) {
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
        }
    }
    $invoicedate= $_POST['invoicedate'];
    $invoiceduedate= $_POST['invoiceduedate'];   
    echo 'post is good';   
    require ('dbconnect.php');     
    echo 'db connect';                             
    if (mysqli_connect_errno()) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
    $result = mysqli_query($con,"SELECT * FROM customer WHERE terms = 1");
    while($row = mysqli_fetch_array($result)) {   
        echo 'array good';
        $item = $row['inputItem'];
        $itemdescription = $row['description1'];
        $itemprice = $row['itemprice1'];
        $id = $row['id'];
        $paidstatus = 5;
        $totaldue = $itemprice;
        require ('dbconnect.php');
        echo $item; 
        echo $itemdescription; 
        echo $itemprice; 
        echo $id; 
        echo $paidstatus;
        echo $invoicedate; 
        echo $invoiceduedate;
        $resulttt = mysqli_query($con,"SELECT invoice_number FROM invoices ORDER BY invoice_number DESC LIMIT 1");
        while($row = mysqli_fetch_array($resulttt)){ 
            $addone = "1";
            $invoicenewnumber = $addone + $row [invoice_number];
        }
        echo $invoicenewnumber;
        //echo $row [invoice_number];                                        
        $invoice_number = $invoicenewnumber; 
        require ('dbconnect.php');
        $put = mysqli_query($con,"INSERT INTO invoices (item, description, item_total, id, paidstatus, duedate, invoicedate, invoice_number, total_due)VALUES('$item', '$itemdescription', '$itemprice', '$id', '$paidstatus', '$invoiceduedate', '$invoicedate', '$invoice_number', '$totaldue')");
        if (!mysqli_query($con,$put)) 
            die('Error: ' . mysqli_error($con));
        echo 'succsess';  
    }   
?>
  • 写回答

2条回答 默认 最新

  • dpj0015 2014-10-14 03:44
    关注

    Try this insert the second query in the while loop.

    And read the comment where ever you find them in the Answer

    Note:You need the connection only one time in whole page.

    <?php
    if(isset($_POST['bill1']))
    {mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    require ('dbconnect.php'); You need the connection only once
    // Check connection
    if (mysqli_connect_errno()) {
     echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }}
    $invoicedate= $_POST['invoicedate'];
    $invoiceduedate= $_POST['invoiceduedate'];
    
    echo 'post is good';
    
        //require ('dbconnect.php'); Dont need here
    
       // echo 'db connect'; Dont need here                
        //if (mysqli_connect_errno()) {
       // echo "Failed to connect to MySQL: " . mysqli_connect_error();
       // }
         $result = mysqli_query($con,"SELECT * FROM customer WHERE terms = 1");
    while($row = mysqli_fetch_array($result)) {
    
    echo 'array good';
    $item = $row['inputItem'];
    $itemdescription = $row['description1'];
    $itemprice = $row['itemprice1'];
    $id = $row['id'];
    $paidstatus = 5;
    $totaldue = $itemprice;
    require ('dbconnect.php');
    echo $item; 
    echo $itemdescription; 
    echo $itemprice; 
    echo $id; 
    echo $paidstatus;
    echo $invoicedate; 
    echo $invoiceduedate;                                
    
    $resulttt = mysqli_query($con,"SELECT invoice_number FROM invoices ORDER BY invoice_number DESC LIMIT 1");
    while($row = mysqli_fetch_array($resulttt)){ 
    $addone=$addone+1;//If you want to add one to the invoice number you have to use this. 
    $invoicenewnumber = $addone + $row ['invoice_number'];//}//remove the closing while loop from here,
    //Added quete to the Invoice_number
    echo $invoicenewnumber;
                                     //echo $row [invoice_number];                                        
    $invoice_number = $invoicenewnumber; 
    require ('dbconnect.php');
    $put = mysqli_query($con,"INSERT INTO invoices (item, description, item_total, id, paidstatus, duedate, invoicedate, invoice_number, total_due)VALUES('$item', '$itemdescription', '$itemprice', '$id', '$paidstatus', '$invoiceduedate', '$invoicedate', '$invoice_number', '$totaldue')");
    }
    if (!mysqli_query($con,$put)) 
    die('Error: ' . mysqli_error($con));
    echo 'succsess';
    
    }
    
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)