2012-07-07 78 views
0

我有一個表稱爲dircode更新MySQL表不同的列

CREATE TABLE dircode (
    jobcodeid int(11) NOT NULL AUTO_INCREMENT, 
    jobcodeserial varchar(255) NOT NULL, 
    jobcode1 varchar(255) NOT NULL, 
    codestatus1 varchar(60) NOT NULL, 
    jobcode2 varchar(255) NOT NULL, 
    codestatus2 varchar(60) NOT NULL, 
    jobcode3 varchar(255) NOT NULL, 
    codestatus3 varchar(60) NOT NULL, 
    jobcode4 varchar(255) NOT NULL, 
    codestatus4 varchar(60) NOT NULL, 
    PRIMARY KEY (jobcodeid) 
) 

用戶可以具有高達爲單個序列號4個作業代碼。 當用戶輸入目錄序列號和一個代碼時,我希望將該特定作業的codestatus更新爲'Used'。其餘數據應保持不變。 例如,當用戶輸入序列號和jobcode3時,codestatus3的狀態應更新爲'Used'。 請幫我寫上面查詢的PHP代碼。

+1

正確地格式化問題 – 2012-07-07 12:32:25

回答

0

正如你所說,你需要UPDATE這一行。

您試圖首先確定輸入的代碼是1,2,3或4(例如jobcode3),然後設置該代碼的狀態(在本例中爲codestatus3)。要做到這一點,我會(或不會,見下文)將整行作爲associative array,並在代碼中找出索引(檢查每個作業代碼,找到代碼並從列名稱中提取索引)。

然後connect到MySQL服務器和execute a query這樣的:

$columName = "codestatus" . $theCorrectIndex; 
mysql_query(sprintf("UPDATE dircode SET %s = 'Used' WHERE jobcodeid = %d", 
         $columName,$dircodeId)); 

檢查布爾返回。如果是false,請檢查details on the error

(或者,你可以把這個所有的SQL查詢中,看到this questionthis和MySQL的control flow functions

這並不是一個很好的解決方案。您可能想考慮創建另一個表codes,其中列idstatus和外鍵列dircode_id因此您可以避免將索引放入列名(通常不是一個好主意)。

此外,有很多關於此的文檔(MySQL,PHP,SO)。