it-swarm.com.de

Prüfen, ob mysql_query etwas zurückgegeben hat oder nicht

$query = "SELECT * FROM `table`";
$results = mysql_query($query, $connection);

Wenn 'Tabelle' keine Zeilen hat. Was ist der einfachste Weg, dies zu überprüfen?

20
Samwise

Sie können mit mysql_num_rows ($ results) prüfen, ob 0 Zeilen zurückgegeben wurden, oder diese schnellere Alternative verwenden:

$query = "SELECT COUNT(*) AS total FROM table";
$results = mysql_query($query, $connection);
$values = mysql_fetch_assoc($results);
$num_rows = $values['total'];
14
Jeremy Ruten

Die Antwort von Jeremy Ruten ist gut und wird schnell ausgeführt; Auf der anderen Seite gibt es nur die Anzahl der Zeilen und sonst nichts (wenn Sie die Ergebnisdaten wünschen, müssen Sie die Datenbank erneut abfragen). Was ich benutze:

// only ask for the columns that interest you (SELECT * can slow down the query)
$query = "SELECT some_column, some_other_column, yet_another_column FROM `table`";
$results = mysql_query($query, $connection);
$numResults = mysql_num_rows($results);
if ($numResults > 0) {
   // there are some results, retrieve them normally (e.g. with mysql_fetch_assoc())
} else {
   // no data from query, react accordingly
}
30
Piskvor

Alternativ können Sie einfach überprüfen, ob das Ergebnis von mysql_fetch_assoc falsch ist.

$query = "SELECT * FROM `table`";
$results = mysql_query($query, $connection);
$Row = mysql_fetch_assoc($results);
if ($Row == false)
{
  $Msg = 'Table is empty';
}
8
Toby Allen

Was mir aufgefallen ist, war, dass die Abfrage nicht erfolgreich war. Sie müssen also prüfen, ob die Variable $ results gesetzt ist. Ich werde die Antwort von yjerem als Beispiel verwenden.

$query = "SELECT COUNT(*) AS total FROM table";
$results = mysql_query($query, $connection);
if ($results) { // or use isset($results)
$values = mysql_fetch_assoc($results);
$num_rows = $values['total'];
}
0
Tebo