web-dev-qa-db-fra.com

Vérifier si mysql_query a retourné quelque chose ou non

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

Si 'table' n'a pas de lignes. Quel est le moyen le plus simple de vérifier cela?

20
Samwise

Vous pouvez utiliser mysql_num_rows ($ results) pour vérifier si 0 lignes ont été renvoyées, ou utiliser cette alternative plus rapide:

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

La réponse de Jeremy Ruten ci-dessus est bonne et s'exécute rapidement; par contre, il ne vous donne que le nombre de lignes et rien d’autre (si vous voulez les données de résultat, vous devez interroger à nouveau la base de données). Ce que j'utilise:

// 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

Sinon, vous pouvez simplement vérifier si le résultat de mysql_fetch_assoc est faux.

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

Une chose que j'ai remarquée et qui a été omise est le fait que la requête risque de ne pas aboutir. Vous devez donc vérifier si la variable $ results est définie. Je vais utiliser la réponse donnée par yjerem à titre d'exemple.

$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