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

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 に答える
1

私の理解が正しければ、あなたがやりたいことは REPLACE INTO 関数を使用することです。彼女は最初に削除し、後に挿入します... ??

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

于 2012-07-17T10:10:55.520 に答える