php empty()无法正常工作
我有一个不寻常的问题,我真的不敢相信它真的发生了,但它正在发生,我无法找到解决它的方法。如果有人知道我做错了什么,请帮助我 我需要一个数组php empty()无法正常工作,php,mysql,arrays,is-empty,Php,Mysql,Arrays,Is Empty,我有一个不寻常的问题,我真的不敢相信它真的发生了,但它正在发生,我无法找到解决它的方法。如果有人知道我做错了什么,请帮助我 我需要一个数组$EmpExists=array(),它在检查数据库中是否有员工与其关联的所有企业后显示结果。我使用php从数据库中获取一些值,并检查该值是否为空。我有以下表格和数据行: Table `EmployeeList` Columns EmpID BusinessID Row 1 `emp-000001`,`business-000001` Row
$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"];
}
现在$EmpExists=array()代码>显示包含以下答案的数组:
Array
(
[0]=> EmpExists
[1]=> EmpExists
[2]=> EmpExists
)
Array
(
[0]=> emp-000001
[1]=> emp-000002
)
Array
(
[0]=> business-000001
[1]=> business-000002
[2]=> business-000003
)
和$empidrocrd=array()代码>显示包含以下答案的数组:
Array
(
[0]=> EmpExists
[1]=> EmpExists
[2]=> EmpExists
)
Array
(
[0]=> emp-000001
[1]=> emp-000002
)
Array
(
[0]=> business-000001
[1]=> business-000002
[2]=> business-000003
)
和$BusinessIDforthis=array()代码>显示包含以下答案的数组:
Array
(
[0]=> EmpExists
[1]=> EmpExists
[2]=> EmpExists
)
Array
(
[0]=> emp-000001
[1]=> emp-000002
)
Array
(
[0]=> business-000001
[1]=> business-000002
[2]=> business-000003
)
问题是我需要它显示$EmpExists=array()中的最后一项由于来自BusinessList
的最后一个BusinessID
在EmployeeList
中没有它的任何记录,因此存在要成为empnote的代码。我如何才能做到这一点,如果可能,请指导我。$select\u EmpID\u query=mysqli\u query($connection,$select\u EmpID)
将始终返回true,除非出现资源错误,这意味着它将循环其true的次数(BusinessList中的3行=3个循环)。您应该改用mysqli\u num\u rows()
实际上,您应该使用联接来获取数据:
SELECT * FROM BusinessList AS BL
LEFT JOIN EmployeeList as EL ON BL.BusinessID = EL.BusinessID
ORDER BY BL.BusinessID ASC
另外,shouldnt$EmpID=$EmpID_数组[“EmployeeID”]代码>这是$EmpID=$EmpID_数组[“EmpID”]
?检查上述问题的空状态,其中mysqli\u fetch\u assoc
总是产生true
可以使用mysqli\u num\u 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= '';
}
}
@RiggsFolly你能看到我在上面的代码中做错了什么吗?我甚至都看不懂这个代码。这里的缩进怎么样?警告:当使用mysqli
时,您应该使用and将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。永远不要把$\u POST
或$\u GET
数据直接放到查询中,如果有人试图利用你的错误,这可能是非常有害的。谢谢我会记住这一点。谢谢朋友,我不知道这一点。