更新查询不更新表中的字段

时间:2013-08-27 04:51:57

标签: php mysql

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

$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个更新,我有一个完整的查询评论...拆分它以查看更新中无效的内容... 我做了echo和vardump ...在循环之外他们给了我正确的值...但是在循环内他们有我11111而不是5 ...例如...不确定我做错了什么...我是非常新的PHP(2天?),并希望得到一个解决方案......

4 个答案:

答案 0 :(得分:3)

问题出在开关上。

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

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

在任何情况下,开关都不会像那样工作,你需要单独的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;
}

另请注意,$ct的案例不在2到4之间。

答案 1 :(得分:0)

检查$ ct值。

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

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

答案 2 :(得分:-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']."'");

从此处删除";"分号

答案 3 :(得分:-1)

对MySQL的值使用单引号

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