J'essaie de compter le nombre de lignes dans un tableau et je pensais que c'était la bonne façon de le faire:
$result = $db->query("SELECT COUNT(*) FROM `table`;");
$count = $result->num_rows;
Mais les comptes retournent toujours (int)1
. Si j'utilise la même requête dans phpMyAdmin, j'obtiens le bon résultat. Il se trouve dans un tableau, j'ai donc essayé de tester $count[0]
également, mais cela retourne NULL
.
Quel est le bon moyen de le faire?
Vous devez aller chercher cet enregistrement, il contiendra le résultat de Count ()
$result = $db->query("SELECT COUNT(*) FROM `table`");
$row = $result->fetch_row();
echo '#: ', $row[0];
Essayez toujours de faire une extraction associative, de cette façon, vous obtiendrez facilement ce que vous voulez dans plusieurs cas.
Voici un exemple
$result = $mysqli->query("SELECT COUNT(*) AS cityCount FROM myCity")
$row = $result->fetch_assoc();
echo $row['cityCount']." rows in table myCity.";
$result->close();
$ result-> num_rows; renvoie uniquement le nombre de lignes affectées par une requête. Lorsque vous effectuez un décompte (*) sur une table, il ne renvoie qu'une ligne, vous ne pouvez donc pas obtenir un autre résultat que 1.
Cela a bien fonctionné pour moi.
// Veh Pro Count
$query_tvp = "SELECT count(*) as total from submit";
if ($result_tvp = $mysqli->query("$query_tvp")) {
/* determine number of rows result set */
$total_tvp = $result_tvp->fetch_row();
$total_tvp = $total_tvp['0'];
/* close result set */
$result_tvp->close();
}
echo "Total: $total_tvp";
Je trouve ce moyen plus lisible:
$result = $mysqli->query('select count(*) as `c` from `table`');
$count = $result->fetch_object()->c;
$result->free();
$mysqli->close();
echo "there are {$count} rows in the table";
Non pas que j'ai rien contre les tableaux ...