1

1 時間ごとに実行する cron ジョブを設定しています。フィールド ID に基づいてデータベース内の各ユーザーから値を取得するには、以下のスクリプトが必要です。

フィールド 18 は、0 ~ 10 の値を持つドロップダウンです。以下の PHP では、フィールド 18 の値に基づいて $val を更新したいと考えています。次に、各ユーザーのデータベースのフィールド 45 に $val を渡します。

すべてが機能します。ただし、すべてのユーザーに挿入される値は、LAST ユーザーの情報のみに基づいています。データベースの最後のユーザーのフィールド 18 は 4 に設定されているため、2920 がすべてのユーザーのフィールド 45 に送信されます。私は何を間違っていますか?

また...これは、潜在的なSQLインジェクションなどには適していないことを認識しています。それに取り組む前に、機能を設定しようとしています。

<?php
// Create connection
 $con=mysqli_connect("host","username","password","database");

// Check connection
 if (mysqli_connect_errno($con))
   {
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
   }

  $getvalue = mysqli_query($con,"SELECT value FROM mydatabase WHERE thefieldid=18");

  while ($row = mysqli_fetch_array($getvalue)) {

  foreach($row as $rows) {


   $num = $rows['value'];

   if ($num == 0) { 
   $val = '660'; }

   if ($num == 1) { 
   $val = '990';  }

   if ($num == 2) { 
   $val = '1590'; }

   if ($num == 3) { 
   $val = '1955'; }

   if ($num == 4) { 
   $val = '2920'; }

   if ($num == 5) { 
   $val = '3885'; }

   if ($num == 6) { 
   $val = '4850';  }

   if ($num == 7) { 
   $val = '5400';  }

   if ($num == 8) { 
   $val = '3885';  }

   if ($num == 9) { 
   $val = '5400'; }

   if ($num == 10) { 
   $val = '7200';  }

   echo $num;
   mysqli_query($con, "UPDATE mydatabase SET value = $val WHERE thefieldid = 45");

}   
}

 ?> 
4

1 に答える 1

0

ループの現在の行で特定のユーザーをターゲットにするために、更新をフィルター処理する必要がありますか?

e.g $getvalue = mysqli_query($con,"SELECT value, userid FROM 
mydatabase WHERE thefieldid=18");

..

mysqli_query($con, "UPDATE mydatabase SET value = $val 
WHERE thefieldid = 45 AND userid= $row['userid']");
于 2013-07-17T21:37:33.547 に答える