2009-08-19 12 views
1

Ich führe die folgende Abfrage, erwartet, dass es ein INTEGER zurückgibt, aber es gibt "Resource ID # 3"
Was mache ich falsch?MySQL PHP zählen (*) etwas seltsam zurückgeben

$queryPlans = mysql_query("SELECT count(*) FROM infostash.rooms"); 
echo $queryPlans; 

Es gibt tatsächlich 15 Zeilen in dieser Tabelle, und ich möchte die Nummer 15. Irgendwelche Vorschläge zurück?

+3

Ist 'php.net' (und es ist 20-something-Spiegel) wieder herunter, so dass Sie nicht nur die ziemlich vollständige Dokumentation lesen konnten? Ich verstehe es nicht. – Bombe

Antwort

2

Sie benötigen:

$queryPlans = mysql_query("SELECT count(*) FROM infostash.rooms"); 
$row = mysql_fetch_array($queryPlans); 
echo $row[0]; 

mysql_query() ist das Ergebnis nicht zurück. Es gibt eine Ressource zurück, die Sie durchlaufen und nach Zeilen abfragen können (wie oben).

+0

Ja, das ist perfekt Kumpel, vielen Dank! –

1

Dies wird entsprechend der Dokumentation Verhalten tatsächlich zu erwarten:() gibt eine Ressource auf Erfolg oder FALSE bei einem Fehler

Für SELECT, SHOW, DESCRIBE, EXPLAIN und andere Aussagen des Suchresultates, mysql_query zurück.

Es ist eine reguläre Auswahl, die eine Zeile mit einer Spalte zurückgibt und als solche behandelt werden sollte. Sie können mysql_fetch_array auf das Ergebnis nennen:

$row = mysql_fetch_array($resource); 
$count = $row[0]; 
0

mysql_query() gibt ein result resource. Sie benötigen eine andere Funktion, um "wertvolle Informationen" von dieser Ressource zu erhalten. In diesem Fall wurde mysql_fetch_array()/mysql_fetch_row()/mysql_fetch_object als Cletus aufgezeigt. Oder (da es nur ein einzelner Wert ist) mysql_result().
Jede SQL-Abfrage kann aus verschiedenen Gründen fehlschlagen. Sie sollten immer überprüfen Sie den Rückgabewert von mysql_query(). Wenn es FALSCH ist, ist etwas schiefgelaufen und mysql_error() kann dir mehr darüber erzählen.

$mysql = mysql_connect(...) or die(mysql_error()); 
mysql_selecT_db(.., $mysql) or die(mysql_error($mysql)); 
$query = "SELECT count(*) FROM infostash.rooms"; 
$queryPlans = mysql_query($query, $mysql) or die(mysql_error($mysql)); 
$cRows = mysql_result($queryPlans, 0); 
echo $cRows; 
3

mysql_query wird eine PHP-Ressource zurückzukehren (siehe: http://www.php.net/manual/en/language.types.resource.php).

Die zurückgegebene Ressource sollte dann an mysql_fetch_assoc oder ähnliches übergeben werden.

Da Sie nur die Zählung erhalten, können Sie die folgende verwenden:

$queryPlans = mysql_query("SELECT count(*) FROM infostash.rooms"); 
$count = mysql_result($queryPlans,0,0); 
echo $count; 
0

Wenn Sie die vollständige Abfrage zur Verwendung von später planen (zB wählen, anstatt () zählen) können Sie Speichern Sie einen Datenbanktreffer, indem Sie mysql_num_rows() für die vollständige Abfrage verwenden. Beispiel:

$queryPlans = mysql_query("SELECT * FROM infostash.rooms"); 
$results = mysql_fetch_array($queryPlans); 
echo "There were " . mysql_num_rows($queryPlans) . " results"; 
while($row = mysql_fetch_assoc($queryPlans)){ 
    // Do stuff here 
}