0

我目前正在努力解决以下问题:

$res = $db->uniquequery("SELECT distinct won_current,ctt,darkmatter FROM ".USERS."     WHERE `id` = '".$USER['id']."'");

$checkwon = $res['won_current'];
$ct=$res['ctt']; 
$dm=$res['darkmatter'];

这些似乎正在工作。现在...

$dmgift=0;
while($checkwon>=1000)
{
    $ct=$ct+1;                       
    //incrementing $ct doesnt seem to work in  the loop but it works fine outside it                                         
    $checkwon=$checkwon-1000;

    //threshold ranges and setting of dmgift.
    switch($ct){
        case $ct=1 : $dmgift=25000;break;
        case $ct>=5 && $ct<10: $dmgift=50000;break;
        case $ct>=10 && $ct<15: $dmgift=75000;break;
        case $ct>=15 && $ct<20: $dmgift=100000;break;
        case $ct>=20 : $dmgift=150000;break;

    }
    $dm=$dm+$dmgift;

    //$db->query("UPDATE ".USERS." SET won_current=$checkwon,ctt=$checkthreshold,darkmatter=$dm WHERE `id` = ".$USER['id'].";");
$db->query("UPDATE ".USERS." SET won_current=$checkwon WHERE `id` = ".$USER['id'].";");
$db->query("UPDATE ".USERS." SET ctt='$ct' WHERE `id` = ".$USER['id'].";"); // this update query is not passing.db field remains the same

$db->query("UPDATE ".USERS." SET darkmatter=$dm WHERE `id` = ".$USER['id'].";");           


}

请告知...其他 2 个更新查询顺利通过...如果您注意到以上 3 个更新,我有一个完整的查询在其中评论...拆分它以查看更新中不起作用的内容...我确实回显并vardump...在循环之外他们给了我正确的值...但是在循环内部他们有我 11111 而不是 5...例如...不知道我做错了什么...我是对 php 非常陌生(2 天?),希望有一个解决方案......

4

4 回答 4

3

问题出在开关上。

switch($ct){
    case $ct=1 : $dmgift=25000;break;
    ...
}

第一种情况更改$ct为 1,因此它的值在 SQL 查询中始终为 1,因此看起来查询不起作用。

在任何情况下 switch 都不能那样工作,你需要单独的 if 短语:

if( $ct == 1 ) { 
    $dmgift=25000
}
else if( $ct>=5 && $ct<10 ) {
    $dmgift=50000;
}
else if( $ct>=10 && $ct<15 ) {
    $dmgift=75000;
}
else if( $ct>=15 && $ct<20 ) {
    $dmgift=100000;
}
else if( $ct>=20 ) {
    $dmgift=150000;
}

另请注意,您没有$ct2 到 4 之间的案例。

于 2013-08-27T06:47:06.450 回答
0

检查 $ct 值。

如果 $checkwon 不大于或等于 1000,则 $ct 值将保持与 db 值相同

$db->query("UPDATE ".USERS." SET ctt='" . $ct . "' WHERE `id` = ".$USER['id'].";"); 
于 2013-08-27T04:57:42.947 回答
-1

更改您的更新查询

$db->query("UPDATE ".USERS." SET won_current = '".$checkwon."' WHERE `id` = '".$USER['id']."'");
$db->query("UPDATE ".USERS." SET ctt = '".$ct."' WHERE `id` = '".$USER['id']."'");
$db->query("UPDATE ".USERS." SET darkmatter = '".$dm."' WHERE `id` = '".$USER['id']."'");

从这里删除";"分号

于 2013-08-27T04:56:49.973 回答
-1

对 MySQL 的值使用单引号

$db->query("UPDATE ".USERS." SET won_current='$checkwon' WHERE id = '".$USER['id']."'");
于 2013-08-27T04:57:34.057 回答