2013-07-24 185 views
-1

我的php mysql-code很奇怪。php mysql UPDATE tinyint set selected 1 and rest 0

这个工作不时,有时它将所有的值设置为0,当我执行这段代码。

$tid = htmlentities(mysql_real_escape_string($_POST['themes'])); 
$sql = ("UPDATE ai_themes 
     SET chosen = IF(tid!='$tid', '0','1')"); 

mysql_query($sql); 

,有时只是在夜间所有的值都为0 有没有在枚举类型看又只是好奇,为什么它是如此...

该表为主题:

tid = int, PK, NOT NULL, AUTO_INCREMENT 
name = varchar(30) 
chosen = tinyint(1) 

[编辑]

嗯,看来我不明白从选择形式的有效值:

<form action="my_form_handler.php?c=3" method="post" data-transition="slideup"> 
    <div data-role="fieldcontain"> 
     <label for="themes" class="select">Select theme:</label> 
     <select name="themes" id="select-theme"> 
     <option value="1">Red</option> 
     <option value="2">Green</option> 
     <option value="3">Orange</option> 
      <option value="4">Blue</option> 
     </select> 
    </div> 
    <div data-role="fieldcontain" class="ui-hide-label"> 
     <button type="submit" data-theme="a" name="submit" value="submit-value">Change theme</button> 
    </div> 
</form> 

无法看到任何错误...

+0

ヶ辆 - 需要它吗? &$ _POST ['themes']中的值是多少? –

+0

不,但是,一个人永远不能太狡猾...... – Conjak

回答

0

你错过了这里WHERE部分朋友......没有它,它的所有行匹配你的表

+0

这是他正在尝试做什么?他想将所选主题更新为1,因此所有其他人都必须设置为0 .. – Garytje

+0

不知道代码的其余部分,这里有很多错误空间...主题值不符合当前任何'tid '会导致表中所有行上的'selected = 0'......这正是他所描述的。 – Rufinus

+0

目前'tid'在html端的select语句中被硬编码。 – Conjak