Mysqli Вставка внутри пока L oop и для цикла - PullRequest
0 голосов
/ 31 января 2020

Я застрял в этом коде, проблема в том, что я пытаюсь вставить значения в то время как l oop и для l oop, у меня 584 записи, и мне нужно вставить 15 записей в другую таблицу

    <?PHP
$payroll_date = '2020-01-15';
$date_from = '2019-12-21';
$date_to = '2020-01-05';

    $query = "SELECT * FROM adb_crosschex GROUP BY userid"; 
    $result = mysqli_query($db, $query); 
    if ($result) 
    { 
        $row = mysqli_num_rows($result);          
/* ######################################################################### */
    $x = 0;
    $sqltoDTR = "SELECT * FROM adb_crosschex GROUP BY userid";
    $dtrResult = mysqli_query($db, $sqltoDTR);    
    while($rows = mysqli_fetch_array($dtrResult))  
    {
        $x++;       
        $begin = new DateTime($date_from);
        $end   = new DateTime($date_to);

        $pay_period = date("m-d", strtotime($date_from))." - ".date("m-d", strtotime($date_to));

        $idcode = $rows['idcode'];
        $controlno = $rows['userid'];
        $acctname = $rows['acctname'];
        $transdate = $rows['transdate'];
        $branch = $rows['branch'];

        for($i = $begin; $i <= $end; $i->modify('+1 day')) {
            $date_trans = $i->format("Y-m-d");                  

            /* result 
                2019-12-21
                2019-12-22
                2019-12-23
                2019-12-24
                ....... until reaching the $end         
            */
            /* mysql Insert goes here */            
        }

    }
/* ######################################################################### */
        mysqli_free_result($result); 
    }   
    mysqli_close($db); 

?>

проблема с кодом заключается в том, что он вставлял данные как навсегда, я пытался оставить их на 30 минут, и я получил около 1 миллиона плюс в свою таблицу, хахахаха. Я должен был получить 584 x 15 = 8760 записей. Пожалуйста, помогите

1 Ответ

0 голосов
/ 01 февраля 2020

Хорошо, я думаю, что я решаю это для кода

        for($i = $begin; $i <= $end; $i->modify('+1 day')) {
        $date_trans = $i->format("Y-m-d");                  

        myQuery($idcode, $payroll_date, $pay_period, $branch, $controlno, $date_trans, $acctname);            
    }

Я пытаюсь поместить запрос вставки вне l oop, и он выглядит так

    function myQuery($idcode, $payroll_date, $pay_period, $branch, $controlno, $date_trans, $acctname)
{
    $db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
    $sql = "INSERT INTO `tbl_dtr`(idcode,payroll_date,pay_period,branch,controlno,date_trans,acctname)VALUES('$idcode', '$payroll_date', '$pay_period', '$branch', '$controlno', '$date_trans','$acctname')";
    if ($db->query($sql) === TRUE) { echo "-<br>"; } else { echo $db->error; } 
}
...