[PHP/MySQL] Abfrage klappt per PHP nicht

Warum liefert folgende Funktion IMMER den Wert 7 zurück (für jeden Wert von bl_id2), obwohl dieser total falsch ist und genau die selbe Query in mysql selbst korrekte ergebnisse liefert??

function cbl($bl_id2){
$db = mysql_connect(„127.0.0.1“, „root“);
mysql_select_db(„daten“,$db);
$result2=mysql_query(„select count(*) from adressen where bundesland=$bl_id2“,$db);
return $result2;
}

ciao
Oskar

ganz einfach weil

$result2=mysql_query("select count(*) from adressen where

nicht etwa das Ergebnis in $result2 speichert, sondern nur ein Handle mit dem du im folgenden auf das Ergebnis zugreifen kannst.

Ich empfehle dir folgendes
$result2=mysql_query(„SELECT Count(*) as anzahl from adressen“);

dann:
$row = mysql_fetch_array($result2);
return $row[„anzahl“];

Vielen Dank, es klappt! Ich hab zwar die Logik dahinter noch nicht ganz verstanden, aber immerhin weiß ich, wie`s geht :smile:

ciao
Oskar

Vielen Dank, es klappt! Ich hab zwar die Logik dahinter noch
nicht ganz verstanden, aber immerhin weiß ich, wie`s geht :smile:

Es ist ganz einfach. Du machst eine Abfrage. Das Ergebnis einer Abfrage ist immer eine Tabelle, auch wenn die Tabelle nur eine Spalte und eine Zeile hat. Du hast versucht SQL wie einen Funktionsaufruf zu benutzen:

$result2=mysql\_query("select count(\*) from adressen where ..."

Das klappt nicht.

Nehmen wir mal die korrekte Abfrage auseinander:

SELECT Count(*) as anzahl from adressen");

SELECT COUNT (\*) ...

dürfte die klar sein: zählt die Gesamtzahl aller Datensätze

...FROM adressen;

ist auch klar, adressen ist die Ursprungstabelle.

Das entscheidende ist

AS anzahl

Hier wird das Ergebnis der Abfrage einem Tabellenfeld zugewiesen. (erinnerung: Das Ergebnis einer Abfrage ist immer eine Tabelle)

Der Wert dieses Feldes wird dann mit

$row = mysql\_fetch\_array($result2); (liefert ein Array mit nur 1 Element)
return $row["anzahl"];

ausgelesen.

Das ganze wird dir vielleicht klarer, wenn du dir folgende Abfrage vorstellst:

SELECT name, vorname, count (name) as anzahl from adressen.

Dies würde eine Tabelle mit allen Namen und Vornamen und einem Feld namens Anzahl ergeben in dem immer der gleiche Wert (eben die Anzahl) steht.

Kleine Bemerkung am Rande. Gewöhn dir an, SQL-Schlüsselwörter (SELECT, FROM usw.) groß zu schreiben, und Bezeichner (name, vorname, adressen usw.) klein zu schreiben. Sorgt für besser Übersicht.

cu, holli