php empty() 无法正常工作
php empty() is not working correctly
我遇到了一个不寻常的问题,一个我真的不敢相信真的会发生的问题,但它正在发生并且我无法找到解决方法。如果有人知道我做错了什么,请帮助我。
我需要一个数组 $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
中的最后一个 BusinessID
在 EmployeeList
中没有任何记录。我该怎么做才能正确,如果可能的话请指导我?
$select_EmpID_query = mysqli_query($connection, $select_EmpID);
将始终 return 为真,除非存在资源错误,这意味着它将循环与它的真实次数一样多的次数(来自 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"];
吗?
要检查上述问题的空状态,其中 mysqli_fetch_assoc
总是产生 true
可以使用 mysqli_num_rows
代替上述问题,方法如下:
$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.");}
else
{$EmpIDrows = mysqli_num_rows($select_EmpID_query);
if ($EmpIDrows===0) {
array_push($EmpExists, 'EmpNotExists');
array_push($EmpIDRecord, 'Employee does not exist.');
} else {
array_push($EmpExists, 'EmpExists');
array_push($EmpIDRecord, $EmpID);
}
$EmpIDrows= '';
}
}
我遇到了一个不寻常的问题,一个我真的不敢相信真的会发生的问题,但它正在发生并且我无法找到解决方法。如果有人知道我做错了什么,请帮助我。
我需要一个数组 $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
中的最后一个 BusinessID
在 EmployeeList
中没有任何记录。我该怎么做才能正确,如果可能的话请指导我?
$select_EmpID_query = mysqli_query($connection, $select_EmpID);
将始终 return 为真,除非存在资源错误,这意味着它将循环与它的真实次数一样多的次数(来自 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"];
吗?
要检查上述问题的空状态,其中 mysqli_fetch_assoc
总是产生 true
可以使用 mysqli_num_rows
代替上述问题,方法如下:
$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.");}
else
{$EmpIDrows = mysqli_num_rows($select_EmpID_query);
if ($EmpIDrows===0) {
array_push($EmpExists, 'EmpNotExists');
array_push($EmpIDRecord, 'Employee does not exist.');
} else {
array_push($EmpExists, 'EmpExists');
array_push($EmpIDRecord, $EmpID);
}
$EmpIDrows= '';
}
}