2012-07-17 81 views
0

我考虑的一个小脚本在PHP的MySQL,如果它存在于数据库中,但在更新不存在删除行。 请让我知道如果我在正确的方向我要去。PHP MySQL的删除

继承人发生了什么......

上传的文件,从中我得到的所有数据信息,它随后被插入到MySQL数据库,或者如果已经存在更新。 我想要做的,如果上传的文件没有什么在数据库中(因为它已更新),然后删除该行还有什么是。

AGENT_REF在数据库中的主键

$sql_archeck = mysql_query ("SELECT AGENT_REF FROM epsales"); 
while($check = mysql_fetch_array($sql_archeck) { 
    if ($check["AGENT_REF"] == $agentref) { 

    } 
} 

我希望我已经解释清楚,我的头不右today..lol 感谢您的时间与这一点,任何援助是高度appriciated !

UPDATE

对于例如,假设上传的文件作为信息:

AGENT_REF = 1 
AGENT_REF = 2 
AGENT_REF = 3 
AGENT_REF = 5 

但在数据库:

AGENT_REF = 1 
AGENT_REF = 2 
AGENT_REF = 3 
AGENT_REF = 4 
AGENT_REF = 5 

我想从数据库中删除AGENT_REF 4 :) 希望此更新有助于谢谢!

+0

英语在第一线没有意义...你在问什么? – AlanFoster 2012-07-17 10:13:18

+0

我想从数据库中删除行不是上传的文件在...如: AGENT_REF = 1 AGENT_REF = 2 AGENT_REF = 3 AGENT_REF = 5 作为AGENT_REF 4不在列表中,然后从MySQL删除在数据库AGENT_REF = 4存在:) 这是更容易理解:) – Steve 2012-07-17 10:18:33

+0

你为什么不只是刷新你的表,然后从文件中添加新的数据? – 2012-07-17 10:54:29

回答

1

和array_diff()是你的朋友。

http://php.net/manual/en/function.array-diff.php

<?php 

    $new_refs = array(
    /* load your new references into this array - you haven't said how you're managing them in your original post */ 
); 

$sql_archeck = mysql_query ("SELECT AGENT_REF FROM epsales"); 
    $check = mysql_fetch_array($sql_archeck); 

    $dead_keys = array_diff($check, $new_refs); 


/* $dead_keys now holds a list of keys which don't exist in the new data and you can delete them */ 

?> 

编辑:从MYSQL的对重复密钥更新的答案PHP和array_diff()解决方案改变后阅读其他职位注释解释全要求后...

+0

感谢你为这个:)没”了解array_diff ...感谢您的帮助! :) – Steve 2012-07-17 10:33:50

1

,如果我理解正确的话,你想要做的是使用REPLACE INTO功能,她先删除后...插入?

http://dev.mysql.com/doc/refman/5.0/en/replace.html

+0

替换成将删除的记录,并添加一个新的:) 我只是想删除一条记录,是不是在上传更新后的文件,但在数据库中:)希望这有助于 – Steve 2012-07-17 10:19:42