0

誰かが見て、私が間違っていることを教えてください...私が達成しようとしているのは、私が持っているデータベースです:

AGENT_REF = 1
AGENT_REF = 2
AGENT_REF = 3
AGENT_REF = 4
AGENT_REF = 5

情報を解析するアップロードされたファイル内

$blmarArray = array($agentref);

AGENT_REF = 1
AGENT_REF = 2
AGENT_REF = 3
AGENT_REF = 5

私がやりたいのは、アップロードされたファイルに含まれていないデータベースからAGENT_REFを抽出することです。この場合、AGENT_REF = 4なので、mysqlから削除できます。

$sql_archeck = mysql_query("SELECT `AGENT_REF` FROM `eprentals`");
$archeck = mysql_fetch_array($sql_archeck);
$sqlarArray = array($archeck);
$combyArrayDiff = array_diff($blmarArray, $sqlarArray);
print_r ($combyArrayDiff);

私が取得しているのは、データベースからの最後または最初の AGENT REF であり、データベースに存在しないものではありません。(dbには11あるのにアップロードされたファイルは8しかないので、アップロードされたファイルから削除されたDBにあるものを削除(SHOW)したい)

これについて私がどこで間違っているかについてのガイダンスを提供していただければ幸いです。お時間をいただきありがとうございます。

4

1 に答える 1

2

PHPマニュアルから:

他のどの配列にも存在しないarray1からのすべてのエントリを含む配列を返します。

だからあなたのインストはarray_diff($blmarArray, $sqlarArray)使用する必要がありますarray_diff($sqlarArray, $blmarArray)

=最初のパラメーターとしての大きな配列、および2番目のパラメーターとしてのsamller配列


また、最初の行だけでなく、データベースからすべての行をフェッチする必要があります

$query = "SELECT `AGENT_REF` FROM `eprentals`";
$resource = mysql_query($query);
$sqlarArray = array();
while($row = mysql_fetch_array($sql_archeck))
{
    $sqlarArray[] = $row['AGENT_REF'];
}
$combyArrayDiff = array_diff($sqlarArray, $blmarArray);

/* debug result */
echo "<p><b>SQL list:</b> " . implode(', ', $sqlarArray) . "</p>";
echo "<p><b>Uploaded list:</b> " . implode(', ', $blmarArray) . "</p>";
echo "<p><b>Diff list:</b> " . implode(', ', $combyArrayDiff ) . "</p>";
于 2012-07-19T09:14:54.717 に答える