2016-01-29 91 views
4

我想結合這五個更新陳述。我確信這很簡單,但我是SQL新手,無法確定邏輯。結合SQL更新陳述

$usqlM1 = "UPDATE tblmaincircles SET mcName= '".$_POST['mcNameM1']."' WHERE mcID='M1';" 
$usqlM2 = "UPDATE tblmaincircles SET mcName= '".$_POST['mcNameM2']."' WHERE mcID='M2';"; 
$usqlM3 = "UPDATE tblmaincircles SET mcName= '".$_POST['mcNameM3']."' WHERE mcID='M3';"; 
$usqlM4 = "UPDATE tblmaincircles SET mcName= '".$_POST['mcNameM4']."' WHERE mcID='M4';"; 
$usqlM5 = "UPDATE tblmaincircles SET mcName= '".$_POST['mcNameM5']."' WHERE mcID='M5';"; 

任何幫助將是偉大的。提前致謝!

回答

8

A CASE聲明可以做到這一點。您可以添加一個where子句,以便在MCID編制索引時系統不必評估每條記錄並提高性能。

UPDATE tblmaincircle set mcname = case when mcid = 'M1' then 'McNameM1' 
             when mcid = 'M2' then 'McNameM2' 
             when mcid = 'M3' then 'McNameM3' 
             when mcid = 'M4' then 'McNameM4' 
             when mcid = 'M5' then 'McNameM5' end 
where mcid in ('M1','M2','M3','M4','M5'); 
+0

@xqbert的感謝!正是我在找什麼! –

+1

@Craig Howell:在這種情況下,您不能使用準備好的語句,但您應該清理後變量以避免sql注入。 –

+0

@WilliamBurnham你有什麼好的鏈接來清理post變量。我聽說過這個,想在未來的發展中留意它。 –