简体   繁体   中英

Update Multiple Rows at once MySQL

I have a table which includes a row for each day of the week.

Each row contains 2 input fields.

在此处输入图片说明

I am wanting to click one save button which will update all rows from the table into seperate MySQL rows.

I have the below code to insert new rows (which works fine) but wondering how this can be changed to an UPDATE statement?

 $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());
}

The mysql extension has been deprecated in PHP, and I strongly advice against using it.

Assuming that you're still getting the values that you want to update using the array,

Here is a link about PDO (not official docummentation) that helped me out when I first started with PHP and PDO

Here's an example using 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();

You can use this code to update in 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());
   }

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM