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,而不是数据库中不存在的那些。(在数据库中有 11 个,但上传的文件只有 8 个,所以我想删除(显示)数据库中已从上传的文件中删除的文件)

希望您能给我一些指导,了解我在哪里错了,我感谢您的时间并感谢您的帮助!

4

1 回答 1

2

来自php手册:

Returns an array containing all the entries from array1 that are not present in any of the other arrays.

so insted of array_diff($blmarArray, $sqlarArray) you should use array_diff($sqlarArray, $blmarArray)

= the big array as first parameter, and the samller array as 2nd parameter


you also need to fetch all rows from the database, not just the first

$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 回答