簡體   English   中英

將mysql表從單個輸入更新為不同的列

[英]Update mysql table from a single input to different columns

我有一個名為dircode的表:

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、2、3還是4(例如jobcode3 ),然后設置該代碼的狀態(在本例中為codestatus3 )。 為此,我將(或不會,如下所示)將整個行作為一個關聯數組,並在代碼中找出索引(檢查每個作業代碼,找到代碼並從列名中提取索引)。

然后連接到MySQL服務器並執行如下查詢

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

檢查布爾值返回。 如果為false ,請檢查有關錯誤詳細信息

(或者,你可以把這個所有的SQL查詢中,看到這個問題,或者這個和MySQL的控制流的功能 。)

這不是一個很好的解決方案。 您可能需要考慮使用列idstatus和外鍵列dircode_id創建另一個表codes ,以便避免在列名中添加索引(通常不是一個好主意)。

另外,關於這方面有很多文檔( MySQLPHPSO )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM