循环遍历列并使用MySQL和PHP有条件地更新它们的值

时间:2012-12-11 12:02:58

标签: php mysql sql sql-update

我正在使用PHP和MySQL。

在开始之前:
我知道SQL注入:请不要提出替代方案,我已经知道了。

我对SQL查询不太热,我目前正在通过从POST形式获得的字段值数组进行PHP循环。然后根据数据库中已有的值检查这些值,如果它们不同(而不是NULL),则将更新列。所有这些都是在PHP中完成的。我想知道是否有办法用纯SQL查询“循环”?以下是我的代码的一般概念:

foreach($myInfo as $key=>$value){
    if($value["mand"]){
        $frmErr = $_POST[$value["post"]] == "" ? 1 : $frmErr ;
        $frmErrStr .= $_POST[$value["post"]] != "" ? "" : "- Your ".$value["response"]."<br />" ;
    }
}
if(!$frmErr){
    $updUser = mysql_query("
        UPDATE table_name SET
        homeTelephone='".$_POST[$myInfo["homeTelephone"]["post"]]."'
        WHERE samaccountname='".$samaccountname.
        "'");
    header("Location: confUpdate.php?s=yes");
}

总而言之,我在这里寻找的是一个纯MySQL查询,它将循环遍历数组中的元素,针对相应的数据库列检查发布的值($_POST[$arrayVal])然后,如果它们如果不同,请使用POSTed值更新列。

2 个答案:

答案 0 :(得分:1)

如果samaccountname是唯一键,您可以插入新记录或更新现有记录:

INSERT INTO mytable(samaccountname, hometelephone)
VALUES ($samaccountname1, $hometel1),  ($samaccountname2, $hometel2), ...
ON DUPLICATE KEY UPDATE hometelephone = VALUES(hometelephone)

答案 1 :(得分:0)

您无法使用MySQL循环访问PHP数组。您可以通过在PHP中循环thourgh数组创建一个非常复杂的查询,然后执行该查询,或者您可以将整个数据库表转换为数组,然后遍历该数组,对其进行必要的更改,然后再次循环它更新表格的更改部分。

还要看看SQL Stored Procedures。 ;)