php如果表存在删除mysql

时间:2012-07-17 10:05:38

标签: php mysql if-statement

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

    }
}

我希望我已经清楚地解释过了,今天我的脑袋不在正确的位置 感谢您抽出宝贵时间,任何帮助都非常高兴!

更新

例如,上传的文件信息为:

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 :) 希望此更新有助于谢谢!

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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()解决方案......