php empty() 无法正常工作

标签 php mysql arrays is-empty

我遇到了一个不寻常的问题,一个我真的不敢相信真的会发生的问题,但它正在发生并且我无法找到解决方法。如果有人知道我做错了什么,请帮助我。

我需要一个数组 $EmpExists=array();,它会在检查数据库中是否有员工关联的所有企业后显示结果。我正在使用 php 从数据库中获取一些值,并检查该值是否为空。我有以下表格和数据行:

Table `EmployeeList`
Columns   EmpID       BusinessID
Row 1 `emp-000001`,`business-000001`
Row 2 `emp-000002`,`business-000002`



Table `BusinessList`
Columns    BusinessID
Row 1   `business-000001`
Row 2   `business-000002`
Row 3   `business-000003`

我正在使用以下 php 代码调用企业列表:

<?php
$BusinessIDforthis = array();
$select_BusinessIDs = "SELECT BusinessID FROM BusinessList ORDER BY BusinessID ASC;";
$select_BusinessIDs_query = mysqli_query($connection, $select_BusinessIDs);
if (!$select_BusinessIDs_query) {
    die ("Database query for searching BusinessID failed.");
}
while ($BusinessIDs_array = mysqli_fetch_assoc($select_BusinessIDs_query)) {
    $BusinessIDforthis[] = $BusinessIDs_array["BusinessID"];
}

这为我提供了一个 BusinessID 数组,然后我使用以下 php 代码获取 BusinessID 员工的 EmpID

$EmpID = '';
$EmpExists = array();
$EmpIDRecord = array();
foreach ($BusinessIDforthis as $x) {
    $select_EmpID = "SELECT EmpID FROM EmployeeList WHERE BusinessID='{$x}';";
    $select_EmpID_query = mysqli_query($connection, $select_EmpID);
    if (!$select_EmpID_query) {
        die ("Database query for searching EmpID failed.");
    }
    while ($EmpID_array = mysqli_fetch_assoc($select_EmpID_query)) {
        $EmpID = $EmpID_array["EmpID"];
        if (empty($EmpID)) {
            array_push($EmpExists, 'EmpNotExists');
            array_push($EmpIDRecord, 'Employee does not exist.');
        } else {
            array_push($EmpExists, 'EmpExists');
            array_push($EmpIDRecord, $EmpID);
        }
        $EmpID = '';
    }
}

现在 $EmpExists=array(); 显示一个包含以下答案的数组:

Array
(
[0]=> EmpExists
[1]=> EmpExists
[2]=> EmpExists
)

$EmpIDRecord=array(); 显示了一个包含以下答案的数组:

Array
(
[0]=> emp-000001
[1]=> emp-000002
)

$BusinessIDforthis=array(); 显示一个包含以下答案的数组:

Array
(
[0]=> business-000001
[1]=> business-000002
[2]=> business-000003
)

问题是我需要它来显示 $EmpExists=array(); 中的最后一项是 EmpNotExists 因为最后一个 BusinessList 中的 BusinessIDEmployeeList 中没有任何记录。我怎样才能正确地做到这一点,如果可能请指导我?

最佳答案

$select_EmpID_query = mysqli_query($connection, $select_EmpID); 将始终返回 true 除非出现资源错误,这意味着它将循环与它的 true 一样多的次数(来自 BusinessList 的 3 行 = 3循环)。您应该改用 mysqli_num_rows()

实际上,您应该使用 JOIN 来获取您的数据:

SELECT * FROM BusinessList AS BL
LEFT JOIN EmployeeList as EL ON BL.BusinessID = EL.BusinessID
ORDER BY BL.BusinessID ASC

此外,$EmpID = $EmpID_array["EmployeeID"]; 不应该是$EmpID = $EmpID_array["EmpID"];吗?

关于php empty() 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41838781/

相关文章:

php - Container.php 第 776 行中的 ReflectionException : Class APPPATH\Http\Controllers\DashboardController does not exist

PHP 不更新数据库中的所有数据

ruby-on-rails - Rails 和 PSQL 数组,{} 和 [] 之间的区别?

php - Preg_match_all 和 javascript 数组

php - 在 PHP 中,你如何创建可重用对象?对此有最佳实践吗?你喜欢哪个?

php - SonataAdminBundle 继承问题

java - 在数据库中保存空值

Java对重复值的数组进行排序

php - Symfony2 : Overriding createAction() in SonataAdmin

MySQL 和 SQLAlchemy : getting N recent comments for multiple items