1

MySQLクエリに関するサポートが必要です。複雑なPHP関数をスキップしたいので、MySQLクエリを介してのみそれを実行できるかどうかは本当にわかりません。

解析されたXMLフィードから5分ごとに(CRON経由で)データベースを更新するPHPスクリプトにこのクエリがあります。

INSERT INTO $jackpot->gameId (gameId,gameName,amount,currency,date,hit,hit_date) VALUES (\"$jackpot->gameId\", \"$jackpot->gameName\" , \"$jackpot->amount\", \"$jackpot->currency\",CURRENT_DATE(),0,NULL) ON DUPLICATE KEY UPDATE amount=$jackpot->amount

ここで、このクエリを「拡張」します。「amount」の値が前の値の90%になったら、「hit」列と「hit_date」列を更新する必要があります。

このようなもの、2つの言葉で(クエリなし)

Execute query-->update rows-->check if 'amount' value is down 90%--> if yes --> update hit (set to 1) and update hit_date (CURRENT_DATE()).

MySQLを介してそれを行うことは可能ですか、それともより複雑なphpスクリプトを作成する必要がありますか?

どんな助けでも本当にありがたいです!ありがとうございました!

4

2 に答える 2

1

ここで実行するコードはほとんど提供されていないので、使用していると思いますmysqli。それ以外の場合は、次のように調整してください。

$query = mysqli_query("SELECT amount FROM " . mysqli_real_escape_string($jackpot->gameId) . " WHERE gameId = '" . mysqli_real_escape_string($jackpot->gameId) . "' ORDER BY hit_date DESC LIMIT 1");
$current = mysqli_fetch_array($query, MYSQLI_ASSOC);

// run the insert here

if((($current['amount'] - $new['amount'])/100) <= 0.9) {
    // UPDATE table SET hit = 1, hit_date = CURRENT_DATE() WHERE gameId = $jackpot->gameId
}
于 2013-01-18T14:54:02.873 に答える
0

次のようなクエリを使用できます。

INSERT INTO games (
  gameId,
  gameName,
  amount,
  currency,
  date,
  hit,
  hit_date
) VALUES (
  NULL,
  "test",
  91,
  "€",
  CURRENT_DATE(),
  IF(amount > 90, 1, 0),
  IF(amount > 90, CURRENT_DATE(), NULL)
)
ON DUPLICATE KEY UPDATE
 amount = 91,
 hit = IF(amount > 90, 1, 0),
 hit_date = IF(amount > 90, CURRENT_DATE(), NULL)
于 2013-01-18T15:19:48.520 に答える