0

我正在考虑在 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) {

    }
}

我希望我已经解释清楚了,今天我的头不对了..lol 感谢您抽出宝贵的时间,非常感谢您的帮助!

更新

例如,假设上传的文件包含以下信息:

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 :) 希望此更新对您有所帮助 谢谢!

4

2 回答 2

1

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

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

于 2012-07-17T10:10:55.520 回答
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 的 ON DUPLICATE KEY UPDATE 答案更改为 PHP array_diff() 解决方案......

于 2012-07-17T10:17:13.760 回答