2012-07-17 85 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