我想要实现的是,在我拥有的数据库中:
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);
我得到的只是数据库中的最后一个或第一个代理参考,而不是数据库中不存在的代理参考。 (数据库中有 11 个,但上传的文件仅存在 8 个,因此我想删除(显示)数据库中已从上传的文件中删除的文件)。
来自 php 手册:
返回一个数组,其中包含 array1 中不存在的所有条目 存在于任何其他数组中。
所以安装了
array_diff($blmarArray, $sqlarArray)
你应该使用 array_diff($sqlarArray, $blmarArray)
= 大数组作为第一个参数,小数组作为第二个参数
您还需要从数据库中获取所有行,而不仅仅是第一行
$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>";