Jquery -> php -> mysql 和动态表单字段
Posted
技术标签:
【中文标题】Jquery -> php -> mysql 和动态表单字段【英文标题】:Jquery -> php -> mysql and dynamic form fields 【发布时间】:2010-10-30 16:52:11 【问题描述】:我有一个多页表单,它使用 mysql 中的多个表来输入值。其中一个页面有一个表单,如果用户想要包含额外信息,该表单需要允许用户单击 + 以添加额外的行。可以添加任意数量的行。
当用户单击 + 时,jquery 和 php 将当前用户 ID 插入到数据库表的一行中,然后在输入更多信息时更新。
我遇到的问题是如何为该特定 ID 插入任意数量的行 - 当输入数据时,模糊事件会将数据发送到 php 代码以更新数据库。但是,我遇到的问题是它将更新具有该特定用户 ID 的所有行,而不是当前行。
获取在新行中输入的数据并更新数据库的最佳方法是什么 - 我假设我必须使用 ID 值而不是 userid 值,因为这将是唯一的,或者有其他方法吗?正在做?
感谢您提供的任何建议,目前这个问题让我很困惑......
【问题讨论】:
【参考方案1】:好吧,我认为您需要使用一对标识符,即您的用户 ID 和字段 ID。 仅编辑字段id 就足够了,但是当您需要列出所有用户字段时,则需要另一个参考。
【讨论】:
【参考方案2】:是的,你最好的办法是让 mysql 为创建的每一行返回一个唯一的 id,然后确保每当你编辑表单上的一行时,将 id 连同它一起发送。现在您可以一次编辑一行。
【讨论】:
您对如何实际获取创建的每一行返回的唯一 ID 有什么建议吗?我知道您的来历,但不确定如何将其付诸实践。 您可以: - 添加“;选择 last_insert_id();”在插入查询结束时获取最后插入的 id。 - 可以通过调用mysql_insert_id()获取id; - 你可以通过调用 mysqli->insert_id() 来获取 id;检查 php 引用:[php.net/manual/en/function.mysql-insert-id.php] 和 [php.net/manual/en/mysqli.insert-id.php] 然后通过 json 将 id 发送回 jquery,查看 [docs.jquery.com/Ajax/jQuery.ajax] 示例,然后在每次更新时传递要更新的行的 id 【参考方案3】:是的,您需要插入的行的 ID 值,而不仅仅是用户 ID。我想您想要做的是从您的 Ajax 脚本中传回 mysql LAST_INSERT_ID()
,当您单击 +
时执行插入操作,然后将该 ID 推送到您稍后用于更新行的信息中。
【讨论】:
将 LAST_INSERT_ID() 发送回主窗体的最佳方法是什么? $_SESSION 会是解决方案吗? 我的想法是您可以将其作为 JSON 或 XML 从脚本中传回。【参考方案4】:当您声明您应该使用正在更新的表的主键时,您是正确的,而不是在您的表上多次出现的外键(在您的情况下为 UserId)。这保证您将更新您期望的行。
另一种方法是缩小您更新的行的范围 - 例如,仅更新最近的/具有最高 ID 的行,或者使用使记录唯一的字段组合。但是,使用主键是解决问题的最佳方式。
【讨论】:
以上是关于Jquery -> php -> mysql 和动态表单字段的主要内容,如果未能解决你的问题,请参考以下文章