1

我需要一些关于 MySQL 查询的支持。我真的不知道是否只能通过 MySQL 查询来做到这一点,因为我想跳过一个复杂的 PHP 函数。

我在一个 PHP 脚本中有这个查询,它每 5 分钟(通过 CRON)从解析的 XML 提要更新我的数据库:

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

现在,我将“增强”这个查询。当“数量”值下降(例如)之前值的 90% 时,我需要更新“命中”和“命中日期”列。

像这样,用两个词(无疑问)

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 回答