2014-12-19 28 views
0

我想知道如果我可以使用MySQL IF來選擇要更新的表。我想是這樣的:Mysql if語句來確定表

UPDATE IF(:listId = 'global', `profanity`,`accountProfanity`) SET `active` = IF(`active` = 1,0,1) WHERE `id` = 1 

:listId能奔字符串global或數字。 何時:listId是數字,我想更新表profanity,否則,我想更新accountProfanity。 當我運行此查詢我得到這個結果:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF('global' = 'global', `profanity`,`accountProfanity`) SET `active` = IF(`activ' at line 1 

是否有另一種方式做到這一點?

+0

你從哪裏得到listId的價值? – 2014-12-19 07:39:48

+0

調用一個函數。但我認爲這並不重要。這些參數由PDO SQL正確添加。 MySQL無法執行我的IF語句 – SheperdOfFire 2014-12-19 07:50:50

回答

0

您可以使用事先準備好的聲明此:

SET @id = 1;  
SET @table_name = IF(:listId = 'global', `profanity`,`accountProfanity`); 
SET @update_query = CONCAT('UPDATE ', @table_name, ' 
           SET active = IF(active = 1,0,1) 
           WHERE id = ', @id); 
PREPARE stmt FROM @update_query; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 
+0

也建議OP在何處嵌入此代碼。 – 2014-12-19 10:47:49