PHP Funktionen
Hi,
ich bin es mal wieder ;)
Ich habe jetzt glaube ich ein kleines Verständnisproblem mit Funktionen und Rückgabewerten
Ich hab diese beiden Funktionen:
und
Jetzt möchte ich den in getMinBest() ermittelten Wert gerne in der showStock-Funktion weiter verarbeiten. Diese soll mir dann alle Waren mit einem Bestand kleiner als dem Mindestbestand ausgeben. Doch das klappt so leider nicht. Wenn ich in der SQL-Abfrage die Variable durch eine Zahl ersetzte, dann klappt alles.
Was mache ich denn da Falsch? Danke euch schon mal für die Aufklärung
Gruß
-TobMes
ich bin es mal wieder ;)
Ich habe jetzt glaube ich ein kleines Verständnisproblem mit Funktionen und Rückgabewerten
Ich hab diese beiden Funktionen:
protected function getMinBest() {
//echo '<script type=text/javascript language=javascript> alert("Test") </script>';
$sql = $this->_database->query("SELECT minBestand FROM MinBestand WHERE id=1");
//$result = mysqli_query($this->_database,$showMinBest);
while ($showBestand = $sql->fetch_assoc()) {
echo "Der mindest Bestand ist: ";
echo "<p>" . $showBestand['minBestand']. "</p>";
}
//echo '<script type=text/javascript language=javascript> alert("Result= '.$ergebnis.'") </script>';
return ($showBestand);
}
und
protected function showStock() {
$bestand = lager::getMinBest();
$sql=$this->_database->query("SELECT ArtikelNr,Lagerort,Artikel,Bestand FROM Artikel WHERE Bestand < '$bestand'");
echo "<table border='1'>";
echo "<th>Artikel</th><th>Lagerort</th><th>Bestand</th>";
while($ergebnis = $sql->fetch_assoc()) {
echo "<tr><td>" . htmlspecialchars($ergebnis["Artikel"]) . "</td>"
. "<td>" . htmlspecialchars($ergebnis["Lagerort"]) . "</td>"
. "<td>" . htmlspecialchars($ergebnis["Bestand"]) . "</td>"
. "</tr>";
}
echo "</table>";
}
Jetzt möchte ich den in getMinBest() ermittelten Wert gerne in der showStock-Funktion weiter verarbeiten. Diese soll mir dann alle Waren mit einem Bestand kleiner als dem Mindestbestand ausgeben. Doch das klappt so leider nicht. Wenn ich in der SQL-Abfrage die Variable durch eine Zahl ersetzte, dann klappt alles.
Was mache ich denn da Falsch? Danke euch schon mal für die Aufklärung
Gruß
-TobMes
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 307650
Url: https://administrator.de/contentid/307650
Ausgedruckt am: 22.11.2024 um 22:11 Uhr
3 Kommentare
Neuester Kommentar
Wenn ich das richtig sehe, ist $showBestand was aus der getMinBest() zurückgegeben wird ein Array.
Verwendet wird es in showStock() aber wie eine reguläre Variable.
Du musst entweder in deiner SQL-Query $bestand['minBestand'] verwenden oder gleich dieses Array-Feld aus getMinBest() zurückliefern.
Bei der Gelegenheit sei der Hinweis auf http://php.net/manual/de/security.database.sql-injection.php noch gestattet - ist in deinen beiden Methoden offenbar ein eher überschaubares Risiko - aber mir kräuseln sich immer die Fußnägel wenn ich Variablen in SQL-Queries sehe ;)
Verwendet wird es in showStock() aber wie eine reguläre Variable.
Du musst entweder in deiner SQL-Query $bestand['minBestand'] verwenden oder gleich dieses Array-Feld aus getMinBest() zurückliefern.
Bei der Gelegenheit sei der Hinweis auf http://php.net/manual/de/security.database.sql-injection.php noch gestattet - ist in deinen beiden Methoden offenbar ein eher überschaubares Risiko - aber mir kräuseln sich immer die Fußnägel wenn ich Variablen in SQL-Queries sehe ;)
Moin,
das Problem ist, du gibst bei deiner Funktion `getMinBest()` false zurück.
Die Funktion `fetch_assoc()` gibt dir immer die nächste Zeile zurück, bis alles gelesen ist, dann wir False zurück gegeben. (So die Dokumentation)
Deshalb bricht auch dein Schleife ab. Somit hat `$showBestand` auch im Rückgabewert false und du bekommst keine zufriedenstellende Antwort.
Deine Variable `$bestand` ist also auch false.
Ganz davon abgesehen ist `fetch_assoc()` schon "seit PHP 5.5.0 als veraltet markiert und wird in der Zukunft entfernt werden.". In Zeiten von PHP 7.0 also nicht wirklich zukunftsfähig ;)
Gruß
Chris
das Problem ist, du gibst bei deiner Funktion `getMinBest()` false zurück.
Die Funktion `fetch_assoc()` gibt dir immer die nächste Zeile zurück, bis alles gelesen ist, dann wir False zurück gegeben. (So die Dokumentation)
Deshalb bricht auch dein Schleife ab. Somit hat `$showBestand` auch im Rückgabewert false und du bekommst keine zufriedenstellende Antwort.
Deine Variable `$bestand` ist also auch false.
Ganz davon abgesehen ist `fetch_assoc()` schon "seit PHP 5.5.0 als veraltet markiert und wird in der Zukunft entfernt werden.". In Zeiten von PHP 7.0 also nicht wirklich zukunftsfähig ;)
Gruß
Chris