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");
}

要約すると、ここで探しているのは、配列内の要素をループし、投稿された値($_POST[$arrayVal])を対応するデータベース列と照合し、異なる場合は列を更新する純粋なMySQLクエリです。 POSTされた値。

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 で配列をループして非常に洗練されたクエリを作成し、そのクエリを実行するか、db テーブル全体を配列に取得し、その配列をループして、必要な変更を加えてから、もう一度ループして、テーブルの変更部分を更新します。

また、SQL Stored Proceduresもご覧ください。;)

于 2012-12-11T13:12:14.697 に答える