1

forループをいじって、これが可能かどうか疑問に思ってからしばらく経ちました。これが私が持っているものです。

$mn = $_POST['mnpoints'];                   
$mi = $_POST['mipoints'];
$in = $_POST['inpoints'];
$wi = $_POST['wipoints'];

送信ボタンがクリックされると、フォームからこれらの番号を取得し、次のコードを使用してMySQLデータベースを更新します

for ($i = 0; $i <=4; $i++ )
{
  mysql_query("UPDATE " . $db_table . " SET `score` = `score` + <VARIABLE HERE> WHERE id=$i") or die (mysql_error());
}

これを達成するための最良の方法は何でしょうか?変数はいつでも$m1-$m4に変更でき、$ m$iを使用するだけです。

別の方法やより良い方法があるかどうか疑問に思っていますありがとう

4

3 に答える 3

2

変数を配列に入れます。

$values = array($mn, $mi, $in, $wi);

次に、 を使用して反復するか、 を使用してforeachインデックスを作成し$iます。

注:コードは SQL インジェクション攻撃に対して脆弱です。mysqli準備済みステートメントなどを読むことを強くお勧めします。

http://php.net/manual/en/book.mysqli.php

mysql インターフェースは公式に廃止されており、今後は使用しないでください。

于 2013-02-07T20:11:22.913 に答える
-1

「mnpoints」や「inpoints」などは「スコア」とどのように関係していますか?これらの値をすべてダンプして一緒に追加するだけの場合は、次のようになります。

$score = $mn + $mi  + $in +  $wi;
$sql = "UPDATE ... SET score=score+$score";
于 2013-02-07T20:10:30.557 に答える
-2
function bulkUpdateSingleColumn($table, $id_column, $update_column, array &$idstovals){
    $sql = "update $table set $update_column = CASE $id_column ";
    foreach($idstovals as $id=>$val){
        $sql .= " WHEN '$id' THEN '$val' \n";
    }
    $sql .= " END
    WHERE $id_column in (" . implode(',', array_keys($idstovals)) . ")";
//debugging info
    echo '<small>'.$sql.'</small>';
    $idstovals=array();       
    db_query($sql);      
    done();       
}
于 2013-02-07T20:11:29.540 に答える