【发布时间】:2019-11-17 06:33:37
【问题描述】:
我有一个表单,其中包含可以通过单击“添加新行”按钮动态添加行的部分。
每行有 2 个字段:描述和完成日期
这是我用来存储行的表:
CREATE TABLE IF NOT EXISTS example (
id int(11) NOT NULL AUTO_INCREMENT COMMENT 'Contact ID',
parent_id int(11) NOT NULL COMMENT 'Parent ID',
description varchar(64) NOT NULL COMMENT 'Description',
completed_date date DEFAULT NULL COMMENT 'Completed date',
PRIMARY KEY (id)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8
COLLATE=utf8_unicode_ci
COMMENT='Example';
在我的表单中,字段被定义为数组,所以如果有 2 行,HTML 将是这样的:
<input type="text" name="description[0]" placeholder="Description">
<input type="text" name="completed_date[0]" placeholder="DD-MM-YYYY">
<input type="text" name="description[1]" placeholder="Description">
<input type="text" name="completed_date[1]" placeholder="DD-MM-YYYY">
我使用循环将行写入数据库没有问题,但我正在努力想出UPDATE行的最佳方法。
例如,如果将 2 行写入数据库,然后用户编辑表单并更改第二行的日期,我怎么知道我应该更新数据库的第二行,而不是第一行?
我能想到的唯一方法是将数据库中的“id”字段添加为每一行的隐藏字段,但我的问题是 - 这是标准/最佳方法还是我有其他技巧失踪了?
我可以将其转换为 JSON 字段并将所有行存储为 JSON 对象,但我希望保留轻松查询数据的能力。
编辑 - 只是想到了另一种方法 - 删除所有记录并重新插入而不是更新。这是更好的方法吗?任何意见表示赞赏。
【问题讨论】:
标签: php mysql dynamic sql-update