Während des Entwicklungsprozesses der Verwendung von PHP und MySQL stoßen viele Anfänger auf ein Problem: Wenn wir MySQL_Fetch_assoc () verwenden, um Abfrageergebnisse zu verarbeiten, sollten wir beurteilen, wenn keine Daten zurückgegeben werden? In diesem Artikel werden Sie herauszufinden, wie Sie es richtig und sicher beurteilen können, wie Sie Urteile fällen.
Bevor wir über die Urteilsmethode sprechen, müssen wir die grundlegende Rolle von mySQL_Fetch_assoc () verstehen. Es ist eine PHP -Funktion, die eine Reihe von Daten aus dem von MySQL_Query () zurückgegebenen Ergebnis -Set herausnimmt und sie als assoziatives Array zurückgibt. Die Verwendung ist wie folgt:
<Code> $ result = mysql_query ("SELECT * von Benutzern, wobei Status = 'Active'"); $ row = mysql_fetch_assoc ($ result); </code>Jedes Mal, wenn die Funktion aufgerufen wird, kehrt sie zur nächsten Zeile zurück, bis die Daten im Ergebnissatz abgerufen sind. Wenn es keine Daten mehr gibt, gibt es falsche zurück.
Da die Funktion bei keinen Daten false zurückgibt, können wir direkt bestätigen, ob ein Ergebnis vorliegt, indem wir beurteilen, ob der Rückgabewert falsch ist. Das Folgende sind übliche und korrekte Schreibmethoden:
<Code> $ result = mysql_query ("SELECT * von Benutzern, wobei Status = 'Active'"); if ($ result && mysql_num_rows ($ result)> 0) {
while ($ row = mysql_fetch_assoc ($ result)) {
Echo $ row ['Benutzername']. "<br>";
}
} anders {
echo "keine Daten, die den Kriterien entsprechen.";
}
</code>
Das Urteil ist hier in zwei Ebenen unterteilt:
Ob $ resultal ist , gibt an, ob die Abfrage erfolgreich ist.
MySQL_NUM_ROWS ($ Ergebnis)> 0 wird verwendet, um festzustellen, ob eine zurückgegebene Datensatzzeile vorliegt.
Einige Leute möchten vielleicht faul sein und das Ergebnis von mySQL_Fetch_assoc () direkt beurteilen:
<code> $ row = mysql_fetch_assoc ($ result); if ($ row === false) {
echo "keine Daten";
} anders {
// Es gibt Daten, verarbeiten $ row
}
</code>
Dies ist in einigen einfachen Fragen möglich, wird jedoch nicht als einzige Möglichkeit empfohlen, zu beurteilen. Denn sobald Sie mehrere Datenstücke verarbeiten müssen (verwenden Sie während der Durchfahrten), müssen Sie immer noch zuerst mySQL_NUM_ROWS () verwenden, um festzustellen, ob Daten vorhanden sind. Andernfalls wird die Anweisung überhaupt nicht ausgeführt.
Insgesamt besteht die sicherste und allgemeinste Möglichkeit darin, zuerst zu bestimmen, ob die Abfrage erfolgreich ist, und dann mit MySQL_NUM_ROWS () festzustellen, ob es ein Ergebnis gibt, und schließlich mySQL_Fetch_assoc () zu verwenden, um die Daten zu erhalten. Das vollständige Beispiel lautet wie folgt:
<Code> $ conn = mysql_connect ("localhost", "user", "password"); mysql_select_db ("mydb", $ conn); mysql_set_charset ("utf8", $ conn); $ sql = "Select * von Benutzern, wobei E -Mail wie '%@gitbox.net'";
$ result = mysql_query ($ sql);
if ($ result && mysql_num_rows ($ result)> 0) {
while ($ row = mysql_fetch_assoc ($ result)) {
Echo $ row ['E -Mail']. "<br>";
}
} anders {
echo "kein relevanter Benutzer gefunden";
}
</code>
mysql_fetch_assoc () gibt false zurück, was tatsächlich ein Signal ohne Daten ist, aber für die Robustheit und Klarheit von Programme wird empfohlen, es mit MySQL_NUM_ROWS () zu verwenden. Beachten Sie außerdem, dass die Funktionen von MySQL_* in neueren Versionen von PHP aufgegeben wurden, und es wird empfohlen, MySQLI oder PDO für Datenbankvorgänge zu verwenden. Das Verständnis des Verhaltens alter Funktionen ist jedoch für die Aufrechterhaltung alter Projekte immer noch sehr wichtig.
Wenn Sie diese Urteilsmethoden beherrschen, können Sie eine robustere und zuverlässigere PHP -Datenverarbeitungslogik schreiben.