2013-08-27 104 views
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天?),并希望得到解决......

+2

为什么要做三单独的更新查询,而不是更新一个查询中的所有3个字段? – Barmar

+0

在将数据传递给数据库之前先回显$ ct值。 – sudhakar

+0

在他们之上有一个注释掉的查询,正在做所有巴尔马......我评论了它,并分解了它,看看问题出在哪里。 – postgresdbs

回答

3

问题是与该开关。

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

第一种情况的变化$ct为1,因此其价值始终为1在SQL查询,以便它看起来像查询不工作。

在任何情况下开关不起作用这样,你需要分开,如果短语:

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; 
} 

另外请注意,您不必对案件2 $ct和4之间

+0

这就是它!不能相信我的错误! '='到'=='......哈哈......比哭泣更好笑......接受。谢了哥们 – postgresdbs

-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']."'"); 

删除从这里

+0

你的查询和OP的查询有什么区别? –

+0

@YogeshSuthar你也可以看到什么是我的查询和OP查询之间的差别..? –

+3

这没有什么区别... – postgresdbs

-1

使用单引号";"分号为MySQL

检查$ CT值
$db->query("UPDATE ".USERS." SET won_current='$checkwon' WHERE id = '".$USER['id']."'"); 
+1

这并没有解决问题...为什么我的3个查询中的2个传递,另一个不是?完全相同的语法...相同的数据库属性特性为$ checkwon ...但仍resfusing工作... – postgresdbs

0

值。

如果$ checkwon大于1000不大于或等于,$ CT值将保持不变分贝值

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

这个查询没有什么区别都是相同的 – sudhakar