我正在尝试通过 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/