繁体   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