我正在使用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值更新列。
答案 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。 ;)