这可能看起来有些奇怪的要求,但重要的是我能让它发挥作用。这是我正在制作的游戏。基本上,我的用户在我的网站上有自己的帐户。我有不同的计划,他们可以选择,每个计划每月花费不同的金额。
我想要做的是拥有4个单独的PHP crons,每个月根据他们选择的计划自动从他们的帐户中减去一定数量的金额。例如,如果用户具有“终极”计划,并且其帐户中当前有1,049.99美元,我希望它从数据库中的“余额”行中减去49.99,然后将表更新为1000.00
(如它减去了计划金额。)
在注册时,数据库加载的值“chargeday”基本上是用户注册的月份的日期。我希望cron每天都运行(我知道该怎么做)并且只在当前日期等于数据库中列出的充电日时才运行此代码。 (我一直在运行此代码,删除了if ($chargeday == date("d")) {
和}
行。
我已经尝试了以下但我不能按照我想要的方式工作:
<?php
$servername = "localhost";
$username = "myusername";
$password = "mypassword";
$dbname = "advenaio_myaccount";
$chargeday = date("d");
if ($chargeday == date("d")) {
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT email, plan, balance FROM advaccounts WHERE plan='ultimate'";
$result = $conn->query($sql);
$ultimateplan = "49.99";
$currentbalance = $row['balance'];
$newbalance = $currentbalance-$ultimateplan;
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "plan: " . $row["plan"]. "<br>balance: " . $row['balance'] . "<br>new balance: " . $newbalance . "<br>email address: " . $row['email'] . "<br><br> ";
}
} else {
echo "0 results";
}
$sql = "UPDATE advaccounts SET balance=$newbalance WHERE plan='ultimate'";
if ($conn->query($sql) === TRUE) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . $conn->error;
}
$conn->close();
?>
我很抱歉,如果我的问题没有意义,我真的需要这个工作,我有点迫不及待它的工作。这是数据库的结构:
id_user |名字|电子邮件|域名|用户名|密码|计划|平衡| joindate |充电日| substatus | cic
答案 0 :(得分:4)
您可以使用以下sql直接使用一个sql更新余额。无需编写php逻辑。
$sql = "UPDATE advaccounts SET balance=balance-49.99 WHERE plan='ultimate' and chargeday = '" . date('d'). "'";