2013-07-24 114 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