从数组mysqli中删除带有第二查询的空结果

时间:2018-11-12 19:05:03

标签: php arrays mysqli

我有2张桌子,其中1张是公司(成本中心),一张是客户(这些公司的雇员)

我需要创建一个表格来编辑或删除按公司(Costcenter)分组的那些公司员工的畸形(例如john smit和j。Smit),当我列出所有这些公司的列表时,我会得到很多公司没有客户。因此,我创建了一系列公司(成本中心),并首先检查它们是否有员工,目的是从阵列中删除没有员工的成本中心($ bedrijven)。

表格没有问题,但是我找不到从bedrijven阵列中删除这些公司的方法。

require_once('conn.php');
$query = "SELECT bedrijfID, Houder, Costcenter, Actief FROM bedrijven 
WHERE Actief = 'actief' ORDER BY Costcenter";
$results = mysqli_query($conn, $query);
if (!$results) printf("Query failed: %s\n", $conn->error);

$bedrijven = [];
while($row = mysqli_fetch_assoc($results)) {
$bedrijven[] = $row['Costcenter'];
}
foreach ($bedrijven as $key => $item) {

$query1 = "SELECT * from customer where Costcenter = '$item' ORDER by 
Client";
$customerresult = mysqli_query($conn, $query1) or 
die(mysqli_error($conn));
if (!$customerresult) printf("Query failed: %s\n", $conn->error);
    if($customerresult->num_rows === 0) {
    unset($bedrijven[$key]);
   }  
}

我不熟悉PDO或功能,因此尝试了这种方式,但这种方式无法按我预期的那样工作,未设置的项也无法正常工作。

该代码已被编辑,因为我现在可以使用,我希望它也可以对其他人有所帮助。如果有更好的解决方案,请发布。

2 个答案:

答案 0 :(得分:2)

如果我了解您要做什么,最好将它作为一个查询来完成。可以先使用JOIN绑定表,然后根据需要使用其他WHERE运算符来优化搜索。我不是100%不确定我是否读对了这正是您想要联接数据的方式,但是如果您与其他JOIN运算符一起玩,您会得到的。

$query = "SELECT Costcenter.bedrijfID, Costcenter.Houder, Costcenter.Costcenter, Costcenter.Actief, customer.* FROM Costcenter
LEFT JOIN customer ON customer.Costcenter = Costcenter.Costcenter 
WHERE Actief = 'Costcenter.actief' AND Costcenter.Costcenter != "" ORDER BY Costcenter.Costcenter";

这样做的最大原因是,单个SQL调用的处理速度比试图从PHP中的多个调用解析数据的速度快。

答案 1 :(得分:0)

多亏了我发现的那只鸟的要求,我在一个简单的解决方案上浪费了很多时间。我不应该这样做:      unset($ bedrijven ['Costcenter']); 但是

 unset($bedrijven[$key]);

您必须取消设置数组中的键而不是值。...

相关问题