Jquery追加/删除并保存到数据库

时间:2010-09-28 16:15:08

标签: php jquery mysql

我想知道是否有人可以看看这段代码并帮助我提出一个更好的方法来做到这一点。

我使用jQuery append / remove来添加和删除列表项。我的代码首先从数据库中选择任何现有行并在列表中显示这些行,然后用户可以添加或删除列表中的任何元素。

我有一个与此类似的数据库结构:

object_id  element_id   auto   order
   1          1          0       2
   1          2          0       1
   1          3          1       3

用户完成追加/删除后,我将留下与此类似的HTML代码:

<ul id="element-list" class="ui-sortable"><li>
<label for="element">Element Description</label>
<input type="hidden" value="1" name="element[1][id]">
<input type="checkbox" value="" name="element[1][auto]">
</li>

<li>
<label for="element">Element Description</label>
<input type="hidden" value="2" name="element[2][id]">
<input type="checkbox" value="" name="element[2][auto]">
</li>
</ul>

由于用户可以添加和删除数据库中存在的行等元素,因此我很困惑如何在数据库中保存这些更改。目前我正在删除所有相应的行,然后在循环中插入新行,如下所示:

foreach($_POST['element'] as $element){

$auto = (isset($element["auto"])) ? 1 : 0;

$query="INSERT INTO $table (object_id, element_id, auto) VALUES ('".$object_id."', '".$element["id"]."', '".$auto."') ";
}

我想知道是否有更有效的方法来删除所有行然后插入新行?

任何意见都会受到赞赏。

由于

3 个答案:

答案 0 :(得分:2)

这绝对是最简单的方法。

2条建议......

  1. 使用PDOmysqli准备好查询。您的代码很容易被SQL注入。
  2. 使用transactions。如果你删除了所有的行然后发生了一些事情并且未插入新行,那就太糟糕了。这样,如果插入未完成,您可以rollback

答案 1 :(得分:1)

删除所有行并插入新行是完成您要完成的任务的最佳方法。但是,如果要优化代码,请更改SQL,以便在单个查询中执行所有插入...

INSERT INTO table (col1, col2, col3) VALUES
 (val1, val2, val3),
 (val1, val2, val3),
 (val1, val2, val3),
 (val1, val2, val3),
 (val1, val2, val3)

答案 2 :(得分:0)

如果您的新行数是其他行,则在更新前删除行很有用。