MySQL一次更新多行

时间:2017-10-25 09:35:59

标签: php mysql

我有一张表,其中包含一周中每一天的一行。

每行包含2个输入字段。

enter image description here

我想点击一个保存按钮,它会将表中的所有行更新为单独的MySQL行。

我有以下代码来插入新行(工作正常),但想知道如何将其更改为UPDATE语句?

 $insertArr = array();
    for ($i=0; $i<$cnt; $i++) {
        $insertArr[] = "('" 
            . mysql_real_escape_string($_GET['Actual'][$i]) .
            "', '" 
            . mysql_real_escape_string($_GET['Period'][$i]) .
            "', '" 
            . mysql_real_escape_string($_GET['AddedBy'][$i]) .
                "', '" 
            . mysql_real_escape_string($_GET['Date'][$i]) .
                "', '" 
            . mysql_real_escape_string($_GET['Employee'][$i]) .
                "', '" 
            . mysql_real_escape_string($_GET['Rotered'][$i]) . "')";
}



 $query = "INSERT INTO hr_employee_rostered_hours (Actual, PeriodID, AddedBy, DateOfHours, EmployeeUniqueID, Rotered) VALUES " . implode(", ", $insertArr);
 mysql_query($query) or trigger_error("Insert failed: " . mysql_error());
}

2 个答案:

答案 0 :(得分:-1)

在PHP中不推荐使用mysql扩展,我强烈建议不要使用它。

假设您仍然使用数组获取要更新的值,

Here is一个关于PDO(非官方文档)的链接,当我第一次使用PHP和PDO时帮助了我

以下是使用PDO

的示例
$updateq = "UPDATE hr_employee_rostered_hours SET (Actual = :actualvalue, PeriodID = :periodid, AddedBy = :addedby,DateOfHours = :dateofhrs, Rotered = :rotered ) WHERE EmployeeUniqueID = :employeeid";
$updatex = $dbh->prepare($updateq);
$updatex->bindValue(":actualvalue",$insertArr[0]);
$updatex->bindValue(":periodid",$insertArr[1]);
$updatex->bindValue(":addedby",$insertArr[2]);
$updatex->bindValue(":dateofhrs",$insertArr[3]);
$updatex->bindValue(":periodid",$insertArr[5]);
$updatex->bindValue(":employeeid",$insertArr[4]);
$updatex->execute();

答案 1 :(得分:-1)

您可以使用此代码在MySQL中进行更新。

for ($i = 0; $i < count($insertArr); $i++){
   $var_to_update = implode(", ", $insertArr[$i]);

   $actual = $var_to_update[0];
   $periodID = $var_to_update[1];
   $addedby = $var_to_update[2];
   $dateofhour = $var_to_update[3];
   $employeeUniqueID = $var_to_update[4];
   $rotered = $var_to_update[5];

   $query = "UPDATE hr_employee_rostered_hours SET (Actual = $actual , PeriodID = $periodID, AddedBy = $addedby, DateOfHours = $dateofhour, EmployeeUniqueID = $employeeUniqueID, Rotered = $rotered) WHERE EmployeeUniqueID = $employeeUniqueID";
   $result = mysql_query($sql);

   if ($result === FALSE) 
   {
    die(mysql_error());
   }

}