【问题标题】:Help with DB updating functionality数据库更新功能帮助
【发布时间】:2011-09-05 12:38:38
【问题描述】:

我正在为客户开发后端功能。他们希望能够通过非常基本的视图添加新记录和编辑旧记录;我正在慢慢地到达某个地方,但我现在被困住了。恐怕我从一开始就没有考虑到我的方法。

现在是这个样子:

“添加”字段集从未显示 atm 的按钮下方滑出。它完全按照它所说的去做,将新记录添加到表中。这很好用,我成功地使视图动态化(每个表的字段更改等),并且插入语句也可以正常工作。然而,问题在于编辑功能。

当我按下记录旁边的“编辑”按钮时,该行的值会加载到上面的表单中。然后客户可以编辑这些值并提交它们。或者应该能够。

我被困在这里了。大多数情况下,更新声明让我想把头撞到墙上。有了表格显示,编写查询并不难:

$this->db->where('guestid' => $guestid)->update($table)

这里的主键是guestid。我应该使用这个 id 来知道我要更新哪一行。但是,目前,我没有办法告诉我的表单我要更新哪一行。我可以制作一个隐藏的输入字段并将 ID 放在那里.. 但是!就像我之前提到的,我将这个视图用于不同的表。不是每个表都有 guestid 等。我当然可以编写一个巨大的 switch 语句或 if 结构来确定哪个表以及哪个 id 应该进入隐藏字段,但我正在寻找一种更简单的方法。

这主要让我头疼,因为有些表有一个组合的 PK(例如:我的表 event_pass 的组合 PK 为 eventIDpassID)。我不确定如何将其链接到表单以及如何告诉我的应用程序“查看,使用此 PK 更新此行上的这些值”。

我有一个数组中的所有表元数据,所以我知道 PK 等:

[eventID] => Array
    (
        [Field] => eventID
        [Type] => int(10) unsigned
        [Null] => NO
        [Key] => PRI
        [Default] => 
        [Extra] => 
    )

[passID] => Array
    (
        [Field] => passID
        [Type] => int(10) unsigned
        [Null] => NO
        [Key] => PRI
        [Default] => 
        [Extra] => 
    )
    etc..

如果对我的思考过程有任何帮助,我将不胜感激。我不是在寻找完整的代码 sn-p,只是一些关于如何实现它并使我的生活更轻松的想法和建议。我可以提供更多关于其他表格外观的屏幕截图,如果需要,我当然可以提供代码。提前致谢。

【问题讨论】:

  • 我们非常想念您的表架构!

标签: php javascript jquery mysql codeigniter


【解决方案1】:

您需要使用SHOW INDEX FROM <table> 查询从表中获取主键(请参阅this)并将主键数据发送到页面 - 正如您所建议的,隐藏输入可能是执行此操作的方法,它当然很好,也很简单,并且应该在每个浏览器中完全符合您的期望。

然后您需要做的就是在提交请求时读取该数据并相应地为 UPDATE 查询构建您的 where 子句...

【讨论】:

  • 我有一个数组中的信息;我知道 PK 包含哪些值,但我很难真正将它们联系起来。尤其是当有两个值是 PK 时。不过我会试一试。谢谢。
猜你喜欢
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多