2016-03-09 107 views
1
foreach ($_POST as $nazwa_checkboxa=>$id) { 
    $s = "SELECT uprawnienie FROM user WHERE Id_user=".$id; 
    $helpdesk = 0; 

    if ($s == 0) { 
     $helpdesk = 1; 
    } 

    $z = "UPDATE user SET uprawnienie = ".$helpdesk." WHERE Id_user=".$id; 
    $wynik = $polaczenie->query($z); 
    $zmienione++; 
} 

uprawnienie返回0 = normal用户和1 = administrator 更新始终设置数值为1,我可以改变用户管理员(0-1),但它doesnąt工作1 0PHP - MySQL的语句总是设置值设置为1时更新集

+0

把'$ _POST'数据直接放到你的查询中是一个[糟糕的主意](http://bobby-tables.com/)。这是PDO吗?使用准备好的语句将在很大程度上帮助您。 – tadman

+1

嗯......你永远不会执行第一个查询! – AbraCadaver

回答

1

其实,你可以使用一个查询,例如,它这样做:

update user 
set uprawnienie = (SELECT if(uprawnienie=1,0,1) FROM user WHERE Id_user = '<id>') 
where Id_user = '<id>' 
0

看起来你并没有真正运行query()$s。因此,if ($s==0)未检查查询结果,而是"SELECT..."==0。根据PHP docs,当将这些比较转换为整数时,“字符串很可能会返回0”。