加快INSERT语句

时间:2015-04-16 06:01:39

标签: php html mysqli

我创建了一个php应用程序,可以为整个年份的给定员工创建记录。 我的应用需要以下输入: Application 我使用了以下代码。

<?php
$name=$_SESSION['name'];
$timeofdeparture="00-00-00";          
$timeofattendance="00-00-00";
$absent="Absent";
$startdate = '2015-01-01';              
$end_date ='2016-01-01';                
include 'config.php'; 
while (strtotime($startdate) <= strtotime($end_date))
{
    $flag=2;
    $sql2="INSERT INTO attendance(emp, dateofattendance, status,flag,timeofattendance,timeofdeparture)VALUES('$name', '$startdate', '$absent','$flag','$timeofattendance','$timeofdeparture') ";
    $result2 = $conn->query($sql2);
    $startdate = date ("Y-m-d", strtotime("+1 day", strtotime($startdate)));
}  
?>

但是这使得我的应用程序变慢,因为插入一年的所有记录需要花费很多时间。是否有任何有效的方法来优化此操作?我想在这里做的就是当管理员点击“添加用户”按钮然后必须创建他的一年记录。一年之后我可以再次使用这个脚本。或者我们可以优化此查询以插入记录长达3年? 提前致谢

1 个答案:

答案 0 :(得分:0)

像这样使用

        $sql2 =" INSERT INTO attendance(emp, dateofattendance, status,flag,timeofattendance,timeofdeparture)VALUES ";
            $sql_values = '';
            while (strtotime($startdate) <= strtotime($end_date))
            {
                $flag=2;
               $sql_values .=" ('$name', '$startdate', '$absent','$flag','$timeofattendance','$timeofdeparture') ,";

                $startdate = date ("Y-m-d", strtotime("+1 day", strtotime($startdate)));
            }  
$sql2 = $sql2.$sql_values;
    if($sql_values){
             $result2 = $conn->query($sql2);
        }