mysql / php最佳实践从用户选择中删除行

时间:2012-04-30 02:33:31

标签: php mysql compare row

我有一些javascriptscript,允许用户从容器中添加和删除项目,并将其传递给php以更改表格。如果用户只是添加项目,那么我只需要在表格中插入新行。为此,我针对表运行每个项的查询,如果没有匹配,请插入它。到目前为止一切都很好。

但是,在删除项目时,我需要将表格中的行与容器中的项目进行比较。我可以一次一个地获取表行,并一次一个地将它们与容器中的每个项目进行比较。然后,如果没有匹配,我会删除。但是,这似乎非常缓慢且效率低下任何人都可以推荐一种快速,简单的方法来将请求集合中的项目与数据库表中的行进行比较,并将表格调整为集合。

在一个简单的例子中,dbase中可能有五行,而请求集合中有十个项目,其中六个是新的,这意味着必须删除dbase中的一个,例如dbase 1,2中的值, 3,4,5,用户1,3,4,5,6,7,8,9,10,11要求的项目必须删除,并添加6到11个。

数据在php中以逗号分隔的项目列表的形式接收。转换为数组后,$ array,当前代码为:

 $res = mysql_query("SELECT items from table WHERE user='bob'") or
 die(mysql_error());
  while($row = mysql_fetch_array($res)) {
  for each $array as val{
      if ($val==$row['item']) {
           $check=1;
      }
      else {
           mysql_query("Delete ...row");      
           }
  )
  } //deletes done 
  mysql_query("SELEcT * from table WHERE user='bob'");

 foreach $array as $val { 
 mysql_query("select * from table where item='$val'");
 $numrows = mysql_num_rows($res); if ($numrows==0) {
 mysql_query("INSERT into table (item,user) VALUES('$item','$user)"); }
 //inserts done

似乎很慢。还有更好的方法吗?

0 个答案:

没有答案