Ich habe ein ungewöhnliches Problem, eines, das ich wirklich nicht glauben kann, ist tatsächlich passiert, aber es passiert und ich bin nicht in der Lage, den Ausweg zu finden. Bitte hilf mir, wenn jemand weiß, was ich falsch mache.php empty() funktioniert nicht richtig
Ich brauche ein Array $EmpExists=array();
, die Ergebnisse nach der Überprüfung der Datenbank für alle Unternehmen zeigt, denen sie Mitarbeiter zugeordnet haben oder nicht. Ich verwende PHP, um ein paar Werte aus der Datenbank zu bekommen und überprüfe, ob der Wert leer ist oder nicht. Ich habe folgende Tabellen und Zeilen von Daten in ihnen:
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`
ich folgenden PHP-Code verwende Liste von Unternehmen zu nennen:
<?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"];
}
Das gibt mir eine Reihe von BusinessID
und dann verwende ich folgende php Code die EmpID
der Mitarbeiter für die BusinessID
$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 = '';
}
}
Jetzt $EmpExists=array();
bekommen zeigt ein Array mit folgenden ans wers:
Array
(
[0]=> EmpExists
[1]=> EmpExists
[2]=> EmpExists
)
und $EmpIDRecord=array();
zeigt ein Array mit folgenden Antworten:
Array
(
[0]=> emp-000001
[1]=> emp-000002
)
und $BusinessIDforthis=array();
zeigt ein Array mit folgenden Antworten:
Array
(
[0]=> business-000001
[1]=> business-000002
[2]=> business-000003
)
Das Problem ist, dass ich es brauchen zeigen Sie den letzten Artikel innerhalb der $EmpExists=array();
zu EmpNotExists
weil die letzte BusinessID
von BusinessList
hat keine Aufzeichnung davon in EmployeeList
. Wie kann ich das richtig machen, bitte führe mich wenn möglich.
@RiggsFolly ich sehen, was ich falsch mache Könnten Sie in meinem Code über dann? –
Ich kann diesen Code sogar nicht lesen. Was ist mit einer Einrückung hier? –
** WARNUNG **: Wenn Sie 'mysqli' verwenden, sollten Sie [parametrisierte Abfragen] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) und [' bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param.php), um Benutzerdaten zu Ihrer Abfrage hinzuzufügen. ** Verwenden Sie NICHT ** String-Interpolation oder Verkettung, um dies zu erreichen, weil Sie einen schwerwiegenden [SQL injection bug] erstellt haben (http://bobby-tables.com/). ** NIEMALS ** $ _POST 'oder' $ _GET' Daten direkt in eine Abfrage einfügen, es kann sehr schädlich sein, wenn jemand versucht, Ihren Fehler auszunutzen. – tadman