2012-07-17 98 views
1

該查詢用於更新inUse變量,如果表單輸入的結果(例如, $ _POST ['eventID']匹配數據庫中的eventID,從而將該事件的inUse值更改爲1,將其他所有值更改爲零。MySQL查詢將一個值設置爲1,將所有其他值設置爲0

mysql_query("UPDATE events SET inUse=IF('$_POST['eventID']' = eventID, 1, 0)"); 

數據庫需要一個整數,但我很擔心,因爲我已經傾倒了$ _ POST [「EVENTID」]這是顯示爲一個字符串值。我試過用intval和int無濟於事。

或者是我的查詢語法中的問題?

謝謝:)

+1

你'IF()'不到風度有一個')' – 2012-07-17 14:25:53

回答

1

試試這個:

UPDATE events SET 
inUse = ('$_POST['eventID']' = eventID); 

這假定inUse是一個布爾值(這在MySQL作爲TINYINT與價值觀要麼10實現,但無論情況下,MySQL轉換之間的布爾值/整數值就好)

1

我從查詢類型是PHP的猜測。

無論你的語法有什麼問題(這是一個缺失的括號是不是?),真的不使用那個帖子。您是否嘗試將「'); DROP TABLE events」的值發送到您的帖子變量呢?如果沒有,我相信別人會!

如果該值是一個int,嘗試

$num = (int)$_POST['eventID']; 
mysql_query("UPDATE events SET inUse=($num = eventID), 1, 0"); 
+0

非常感謝。這真的有幫助。我在錯誤的地方使用(int),因此它不工作,也歡呼語法更正!再次感謝。 – 2012-07-17 14:33:54

+0

只是在查詢中發帖讓我不寒而慄。我經營一家小商店,每天通過我的帖子運行約5個人,並使用自動化工具獲取嘗試sql注入攻擊的變量 – Woody 2012-07-17 14:50:51

相關問題