Php 更新查询不更新表中的字段
我目前正在努力解决以下问题:Php 更新查询不更新表中的字段,php,mysql,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($ch
$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'].";");
}
$dmgift=0;
而($checkwon>=1000)
{
$ct=$ct+1;
//递增$ct在循环中似乎不起作用,但在循环外效果很好
$checkwon=$checkwon-1000;
//阈值范围和dmgift的设置。
交换机($ct){
案例$ct=1:$dmgift=25000;中断;
案例$ct>=5&&$ct=10&&$ct=15&&$ct=20:$dmgift=150000;中断;
}
$dm=$dm+dmgift;
//$db->query(“UPDATE.USERS.”SET-won\u-current=$checkwon,ctt=$checkthreshold,darkmatter=$dm-WHERE`id`=“$USER['id']。”;”;
$db->query(“UPDATE.USERS.”SET-won\u-current=$checkwon其中`id`=“$USER['id'].”“;”;
$db->query(“UPDATE.USERS.”设置ctt='$ct'其中`id`='$USER['id'].“;”);//此更新查询未通过。db字段保持不变
$db->query(“UPDATE.USERS.”设置暗色材质=$dm,其中`id`=“$USER['id'].”;”;
}
敬请告知…其他2个更新查询通过良好…如果您注意到以上3个更新,我有一个完整的查询在…分割它,看看什么是不工作的更新。。。
我做了echo和vardump…在循环外,他们给了我正确的值…但在循环内,他们给了我11111而不是5…例如…不确定我做错了什么…我对php非常陌生(2天?),希望有一个解决方案…更改您的更新查询
$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']."'");
删除
”;“
此处的分号对MySQL的值使用单引号
$db->query("UPDATE ".USERS." SET won_current='$checkwon' WHERE id = '".$USER['id']."'");
检查$ct值
如果$checkwon不大于或等于1000,$ct值将保持相同的db值
$db->query("UPDATE ".USERS." SET ctt='" . $ct . "' WHERE `id` = ".$USER['id'].";");
问题出在开关上
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==1){
$dmgift=25000
}
如果($ct>=5&&$ct=10&&$ct=15&&$ct=20),则为其他情况{
$dmgift=150000;
}
另外请注意,
$ct
在2和4之间没有案例。为什么要在一个查询中更新所有3个字段而不是三个单独的更新查询?在将$ct值传递给DB之前,回显$ct值。在它们的正上方有一个已注释掉的查询正在执行所有这些Barmar操作…我对其进行了注释并拆分,以查看问题可能出在哪里。问题是什么你的查询和OP的查询有什么区别?@Yogeshuthar你也可以看到我的查询和OP的查询有什么区别..?这两个查询没有区别都是一样的这并没有解决问题…为什么我的三个查询中有两个通过了,而另一个没有通过???完全相同的语法…与$checkwon相同的db属性特征…但仍然可以重新融合…就是这样!真不敢相信我的错误!从“=”到“=”…哈哈…笑总比哭好…接受了。谢谢,伙计