Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 一次更新多行MySQL_Php_Mysql - Fatal编程技术网

Php 一次更新多行MySQL

Php 一次更新多行MySQL,php,mysql,Php,Mysql,我有一张一周中每天都有一排的桌子 每行包含2个输入字段 我想单击一个保存按钮,它会将表中的所有行更新为单独的MySQL行 我有下面的代码来插入新行(这很好),但不知道如何将其更改为UPDATE语句 $insertArr = array(); for ($i=0; $i<$cnt; $i++) { $insertArr[] = "('" . mysql_real_escape_string($_GET['Actual'][$i]) .

我有一张一周中每天都有一排的桌子

每行包含2个输入字段

我想单击一个保存按钮,它会将表中的所有行更新为单独的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());
}
$insertArr=array();

对于($i=0;$i),PHP中不推荐使用mysql扩展,我强烈建议不要使用它

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

一个关于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();

您可以使用此代码在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());
   }

}
for($i=0;$i
Deprecated:mysql扩展已弃用,将来将被删除:使用mysqli或PDO代替检查此mysqli示例谢谢。我将尝试一下。我是PDO新手。可能还需要检查一下以确保执行()返回true而不是false。只是为了调试目的,我只是给他一个pdo的一般结构和绑定值,让他与Elanor一起工作。再次感谢。但是,我不确定应该如何声明这些值?(实际值、周期ID、addedby等)?您好,这是什么意思?根据您的代码,我看到的是您以某种方式将它们放入一个数组中,然后内爆数组以形成一个字符串。我所做的只是从数组中取出值,而不是内爆值,并将其绑定到查询中。谢谢,这将在哪里适合/替换到我的上面代码中?谢谢,如何它似乎什么都没做过吗?这段代码正在工作。你只需要把它放在正确的位置。我在
之后添加了它。mysql\u real\u escape\u string($\u GET['Rotered'][$i])。“)”;}-是这样吗?我刚刚看到
查询是空的