我有一些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
似乎很慢。还有更好的方法吗?