0

我正在使用 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]根据相应的数据库列检查发布的值 (),然后,如果它们不同,则使用发布的价值。

4

2 回答 2

1

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

INSERT INTO mytable(samaccountname, hometelephone)
VALUES ($samaccountname1, $hometel1),  ($samaccountname2, $hometel2), ...
ON DUPLICATE KEY UPDATE hometelephone = VALUES(hometelephone)
于 2012-12-11T12:29:10.673 回答
0

您不能使用 MySQL 循环遍历 PHP 数组。您可以创建一个非常复杂的查询,通过在 PHP 中循环 thourgh 数组,然后执行该查询,或者您可以将整个 db 表放入一个数组,然后遍历该数组,对其进行必要的更改,然后再次循环它更新表的更改部分。

并看看SQL 存储过程。;)

于 2012-12-11T13:12:14.697 回答