Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php empty()无法正常工作_Php_Mysql_Arrays_Is Empty - Fatal编程技术网

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
数据直接放到查询中,如果有人试图利用你的错误,这可能是非常有害的。谢谢我会记住这一点。谢谢朋友,我不知道这一点。