php - 使用序列化表单数据更新mysql数据库中的多行

标签 php mysql

我正在尝试通过 AJAX 使用来自 html 表单数据的数据更新数据库中的多行。我对更新数据库没有任何问题,但我使用了几个查询来更新每一行。使用 AJAX 更新来自大表单的多行的正确方法是什么? foreach 循环?

if ( isset($_POST['updateData']) ) {
    parse_str($_POST['fields']);

    $update1 = $db->execute("UPDATE content SET content_text=? WHERE page_id = '".$page_id."' AND lang_code = '".$lang_code."' AND content_id =1", array($field1));
    $update2 = $db->execute("UPDATE content SET title=?, content_text=? WHERE page_id = '".$page_id."' AND lang_code = '".$lang_code."' AND content_id =2", array($field2_title, $field2));
    $update3 = $db->execute("UPDATE content SET title=? WHERE page_id = '".$page_id."' AND lang_code = '".$lang_code."' AND content_id =3", array($field3_title));

}

我的数据库

ID | content_id | page_id | lang_code | title      | content_text |
---------------------------------------------------------------------
1  | 1          | 2       | en        |            | text1        |
2  | 2          | 2       | en        | title2     | text2        |
3  | 3          | 2       | en        | title3     |              |

我的表格看起来像这样:

<input name="field1">
<input name="field2_title">
<input name="field2">
<input name="field3_title">

我的脚本:

var form_data = $(this).serialize();
$.ajax({
    type : 'POST',
    url  : '#',
    data : {
        updateData : 1,
        fields : form_data
    }
});

最佳答案

好吧,所以改为

<input name="field1">
<input name="field2_title">
<input name="field2">

使用这个

<input name="field[1][content]">
<input name="field[2][title]">
<input name="field[2][content]">

所以你可以在 php 中使用 foreach

foreach($_POST['field'] AS $id => $elem){
    $content = (isset($elem['content'])) ? $elem['content'] : '';
    $title = (isset($elem['title'])) ? $elem['title'] : '';

    $update = $db->execute("UPDATE content SET title=?, content_text=? WHERE page_id = '".$page_id."' AND lang_code = '".$lang_code."' AND content_id =?", array($title, $content, $id));
}

我认为这是最简单的方法。

关于php - 使用序列化表单数据更新mysql数据库中的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36202173/

相关文章:

mysql - 从过程调用过程

php - Doctrine 查询类不在实体目录中

PHP BETWEEN 子句用法

具有无限子类别的 PHP 和 Mysql 树形导航菜单

javascript - jquery 选择限制字符并禁用下拉菜单

html - 如何在 MySQL 函数中将 SQL 选择查询转换为格式化的 HTML 表

c# - 如何通过迭代行从 DataTable 中检索数据

javascript - 如何确定用户何时正式离开或进入页面

mysql - 在创建从两个表中选择数据的 MYSQL 查询时遇到问题

mysql - 在数据库中使用子查询是更好的做法吗?