2009-04-28 8 views
4

Lassen Sie sagen, dass wir die folgende Abfrage haben:mysql Zählung in PHP-Variablen

SELECT DISTINCT COUNT(`users_id`) FROM `users_table`; 

diese Abfrage wird die Anzahl der Benutzer aus einer Tabelle zurück. Ich muss diesen Wert an eine PHP-Variable übergeben. Ich benutze dies:

$sql_result = mysql_query($the_query_from_above) or die(mysql_error()); 

if($sql_result) 
{ 
    $nr_of_users = mysql_fetch_array($sql_result); 
} 
else 
{ 
    $nr_of_users = 0; 
} 

bitte korrigieren Sie meinen Code, wo Sie denken, ist notwendig.

Welches ist der beste Ansatz. Wie empfehlen Sie dies zu tun?

+0

Haben Sie versucht, einen print_r ($ sql_result) zu tun, um zu sehen, was es zurückgibt? Es gibt ein Array zurück, so dass Sie beispielsweise durch $ num = $ result [0] [0] Zeug aufnehmen können (tun Sie ein if (isset (.)) Zuerst) – AlexanderJohannesen

Antwort

24

So:

// Changed the query - there's no need for DISTINCT 
// and aliased the count as "num" 
$data = mysql_query('SELECT COUNT(`users_id`) AS num FROM `users_table`') or die(mysql_error()); 

// A COUNT query will always return 1 row 
// (unless it fails, in which case we die above) 
// Use fetch_assoc for a nice associative array - much easier to use 
$row = mysql_fetch_assoc($data); 

// Get the number of uses from the array 
// 'num' is what we aliased the column as above 
$numUsers = $row['num']; 
3

Auch eine Alternative mit mysqli, die Sie ohnehin für Parameterinterpolation verwenden sollen:

$statement = $connection->prepare($the_query_from_above); 
$statement->execute(); 
$statement->bind_result($nr_of_users); 
$statement->fetch();