Php foreach循环$\u POST排除空字段和数据库中已准备就绪的字段

Php foreach循环$\u POST排除空字段和数据库中已准备就绪的字段,php,Php,我将尝试用一个名为$\u POST的表单解释我目前遇到的问题,并将其插入MYSQL数据库 这是我的代码: $getadmrmaid = $_GET['id']; $admrmadetstmt = $dbh->prepare("SELECT * FROM rma_detail LEFT JOIN rma ON rma_detail.rd_rma_id=rma.r_id LEFT JOIN klanten ON rma.r_kl

我将尝试用一个名为$\u POST的表单解释我目前遇到的问题,并将其插入MYSQL数据库

这是我的代码:

$getadmrmaid        = $_GET['id'];

$admrmadetstmt  = $dbh->prepare("SELECT * FROM rma_detail
            LEFT JOIN rma ON rma_detail.rd_rma_id=rma.r_id
            LEFT JOIN klanten ON rma.r_klantid=klanten.k_id
            LEFT JOIN contactpersonen ON rma.r_contactid=contactpersonen.c_id
            WHERE rd_rma_nr = ?");
$admrmadetstmt->bindParam(1,$getadmrmaid);                      
$admrmadetstmt->execute();
$admrmadetrow = $admrmadetstmt->fetch(PDO::FETCH_ASSOC);    

if ($_SERVER['REQUEST_METHOD'] == 'POST'){

foreach ($_POST as $key => $value){
         if (!empty($_POST[$key]) && $admrmadetrow[$key] !== $value){
$uprmadetstmt = $dbh->prepare("UPDATE rma_detail SET $key = ? WHERE rd_id = $getadmrmaid");
$uprmadetstmt->bindParam(1, $value);
$uprmadetstmt->execute();
    }
    }
}
换句话说,这就是我试图做的:

我有一个包含选择和输入字段的表单。它代表一个“受损零件”(RMA)工具,您可以使用该工具跟踪受损零件并查看流程中的其他信息。例如,今天我填写我已收到零件“是”,明天我填写我已将零件发送给我的经销商“是”,因此每一步都会自动更新。如果一个字段今天是空的,但它没有包含在我的更新(在foreach内)循环中,并且如果它已经被填充,那么您也不能更新它。上面的代码没有这样做,我没有得到任何错误,但它也没有字,我似乎无法找到我的问题所在。有人能帮我解决这个问题吗?也许还可以为我提供一些关于编码的技巧,例如如何缩小它的尺寸或使它更干净


提前谢谢

你为什么用“!==”呢而不是“!=”?为什么在更新查询中使用“$key”而不是“SET”?在哪里。我不会使用“if($\u SERVER['REQUEST\u METHOD']='POST')”而是“if(isset($\u POST)){”……那么该怎么做:添加print\r($admrmadetrow)在“if”中,看看会发生什么。感谢更新。我不明白你对列$key的意思是什么?因为我记得不可能使用bindparam列名,还是我错了?我在更新MYSQL时仍然有一些问题,我得到了错误:致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[HY000]:常规错误:1366不正确的整数值:“”,因为他仍希望将我的空字段输入到。我可以排除这些字段吗?