【问题标题】:php/mysql - do that for each IDphp/mysql - 为每个 ID 执行此操作
【发布时间】:2016-04-14 06:19:28
【问题描述】:

第一次来。我从这个网站上找到了很多有用的东西,但我现在卡住了。

我需要有关以下代码的帮助。我希望这段代码检查每个 ID stats[population, populationgrowth],进行可以在 IF 函数中找到的计算,然后插入每个 ID 的人口增长结果。这是一个 cronjob。

$get_users = mysql_query("SELECT * FROM stats") or die(mysql_error());
while($user = mysql_fetch_assoc($get_users)){

if($stats['population'] > $stats['maxpopulation']) {    
    $populationgrowth = 0;
}
else{
    $populationgrowth = 1 * ($unit['moonhut']);
}

$update = mysql_query("UPDATE stats SET populationgrowth='".$populationgrowth."' WHERE id='".$user['id']."'") or die(mysql_error());
}

【问题讨论】:

    标签: php mysql if-statement while-loop


    【解决方案1】:

    在 SQL 查询中进行算术运算:

    UPDATE stats s    
        SET populationgrowth = (CASE WHEN population > maxpopulation THEN 0
                                     ELSE 1 * $unit['moonhut']
                                END):
    

    注意事项:

    • 1 * 是多余的。
    • 停止使用 mysql_。它不再受支持。
    • 然后,在查询中使用参数以获得更安全的查询。

    【讨论】:

    • 这里是开始 mysqli_ 的好地方:stackoverflow.com/questions/1390607/….
    • 谢谢。我以后会这样做的。
    • @Xeuq Gordon 回答了您的原始问题并将问题标记为已解决,请考虑接受答案。以下是meta.stackexchange.com/questions/5234/… 然后返回此处并对勾号/复选标记执行相同操作直到它变为绿色的方法。这会通知社区,找到了解决方案。否则,其他人可能会认为问题仍然悬而未决,可能想要发布(更多)答案。您要求 Gordon 重写您的代码不是他的工作,而是您的工作。他给你留下了一个链接,足以让你开始。
    猜你喜欢
    • 2020-05-30
    • 1970-01-01
    • 2021-10-27
    • 2012-05-25
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    相关资源
    最近更新 更多