首页 > 解决方案 > (CRUD) 如何从 html 行中知道要定位哪些数据库记录

问题描述

一直在谷歌搜索并尝试各种事情,但仍然无法弄清楚。

假设我有一个 html 表单,其中有一个带有行(和输入字段)的表格。这些行已由数据库(mysql)数据填充。它是带有日记帐行的日记帐。

当用户更改某些表行的一个或多个值并随后按下保存按钮时,我只想更改数据库中受影响的行。

一段时间以来一直在使用 delete * from table,然后重新插入所有表行。粗鲁,但现在它有效。(但自动增量 ID 快速上升,其他表中的相关行有时会引发问题)

整个问题是我不喜欢将记录的 ID 发送给客户端并在按下保存按钮时将其发回的想法。除其他想法外,我认为内部 SQL ID 不属于客户端。

一定有另一种方法,而且以前一定有人做过,对吧?

当然,您可以做一些事情,例如跟踪客户端中的更改,使用 UUID(将它们插入表中并将其作为临时 ID 发送到客户端)或在客户端和表中保留行号。但这需要大量工作,并且感觉要么缓慢(呃)要么麻烦。

当您让用户在 html 表中添加或删除行并处理更改数据库中的行时,肯定会变得更糟

有人对我有任何指示吗?我将不胜感激。

标签: phphtmlmysqldatabasecrud

解决方案


我这样做的方法是CLIENT_ID在我的模式中添加一列(或类似的东西),这将是一个生成uuid的并将其与其余数据一起发送给客户端,然后在用户点击时将其发送回来Save。这样您就不必公开内部 SQL ID,但您仍然可以识别数据库中的某些条目。我不确定您是否可以在不向客户端发送某种 ID 然后返回服务器的情况下执行此操作,即使可以,是否值得付出努力?


推荐阅读