• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Variabeln aneinanderhängen

Zupi

Mitglied
Hallo.

Folgende PHP SChleife:

PHP:
for($i=1; $i<3; $i++)	{	$abfrage = "SELECT * FROM `XXX` WHERE `XXX` = '".$i."'";	$ergebnis = mysql_query($abfrage);	$num_row_.$i = mysql_num_rows($ergebnis);	}

Möchte dann am Ende die drei Variablen mit den jeweiligen Anzahlen der vorhanden Datensätze:

$num_row_1
$num_row_2
$num_row_3

Mit

PHP:
$num_row_.$i

versuche ich, die Variable zu benennen. Klappt nicht. Weder Zahl noch Fehlermeldung? Warum? :D
 
Das Problem gehst du wirklich ganz falsch an. Das, was du machen willst geht so am besten:

PHP:
$nums = array(
    1 => 0,
    2 => 0,
    3 => 0
);
$sql = "select `feldname`, count(`id_feld`) `anzahl` from `xxx` where `feldname` in(1, 2, 3) group by `feldname`";
$statement = $pdo->query($sql);
while ($row = $statement->fetch(\PDO::FETCH_ASSOC)) {
    $nums[$row["feldname"]] = (int) $row["anzahl"];
}
echo $nums[1]; // Für feldname = 1
echo $nums[2]; // Für feldname = 2
echo $nums[3]; // Für feldname = 2

Das, was du brauchst, nennt man Arrays. Außerdem solltest du mysql_*-Funktionen nicht benutzen, da es diese in naher Zukunft gar nicht mehr geben wird, weil sie veraltet sind. In diesem Beispiel benutze ich PDO (kannst du in Google nachschauen) als zukunftsfähige Alternative.

Generell sollte auch vermieden werden, in Schleifen Querys auszuführen.
 
Welchen Sinn hat das Abfragen mehrerer nahezu identischer Statements in einer Schleife? Könntest Du das nicht in einem einzige Statement abfragen? Damit sparst Du dir auch viele unnötige Variablen. Beispiel:

PHP:
$abfrage = "SELECT * FROM `XXX` WHERE `XXX` IN (1,2,3)";
 
Zurück
Oben