我正在考虑使用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 :) 希望此更新有助于谢谢!
答案 0 :(得分:1)
如果我理解正确,你想要做的是使用REPLACE INTO功能,她先删除并插入...... ??
答案 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()解决方案......