0

我有一张桌子叫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 代码。

4

1 回答 1

0

正如您所说,您需要更新该行。

您试图首先找出输入的代码是 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 查询中,请参阅this questionthis和 MySQL 的控制流函数。)

这不是一个很好的解决方案。您可能想考虑创建另一个codes包含 columns和外键列的表id,这样您就可以避免将索引放入列名(通常不是一个好主意)。statusdircode_id

此外,还有很多关于此的文档(MySQLPHPSO)。

于 2012-07-07T13:06:52.820 回答