Guten Tag nochmal.
Steh hier vor nem Problem das mir schon häufig immer mal wieder in die Quere gekommen ist. Nun wüsste ich gerne mal was ein programmiertechnisch sauberer Ansatz ist.
Ich habe ein Query, dass mehrere rows zurückgibt. Also schleife ich mit while durch. Jetzt würde ich mir aber während dem durchschleifen gerne gleich die Variablen schnappen und damit weitere Queries ausführen.
Ein Beispiel:
Das obige Beispiel haut meine Variable "$mysqli_db" raus, der mysql error "Commands out of Sync" ensteht.
Nun beuge ich dem eig. vor indem ich bei jedem Query ein store und free result hinhäng.
Also quasi:
Jetzt bringt das aber nicht viel, da weitere mysql queries innerhalb der Schleife ausgeführt werden -> selbes Resultat, mysql stürzt zusammen.
Von daher, wie wird ein solches Beispiel sauber umgesetzt?
Die einzige Möglichkeit die mir einfällt, ist erst alle Rückgabewerte des ersten Queries in Variablen schreiben und dann die Funktion jeweils aufrufen - allerdings sieht das nicht wirklich schön aus, kann uU einiges an Variablen auffressen und ich kann mir nicht vorstellen, dass es da keine bessere Lösung gibt.
Deswegen, gibt es eine bessere Lösung?
Danke!
Steh hier vor nem Problem das mir schon häufig immer mal wieder in die Quere gekommen ist. Nun wüsste ich gerne mal was ein programmiertechnisch sauberer Ansatz ist.
Ich habe ein Query, dass mehrere rows zurückgibt. Also schleife ich mit while durch. Jetzt würde ich mir aber während dem durchschleifen gerne gleich die Variablen schnappen und damit weitere Queries ausführen.
Ein Beispiel:
PHP-Code:
<?php
$stmt = $mysqli_db->prepare("SELECT name FROM benutzer WHERE variable=? LIMIT 5;"); //gibt 5 Reihen zurück
$stmt->bind_param('d',$variable);
$variable=5;
$stmt->execute();
$stmt->bind_result($name);
while ($stmt->fetch())
{
LadeAddresse($name,$mysqli_db);
}
?>
<?php
function LadeAddresse($name,$mysqli_db)
{
$stmt = $mysqli_db->prepare("SELECT anschrift FROM addressen WHERE name=? LIMIT 1;");
$stmt->bind_param('s',$benutzer_name);
$benutzer_name=$name;
$stmt->execute();
$stmt->store_result();
if($reihen = $stmt->num_rows)
{
$stmt->bind_result($addresse);
$stmt->fetch();
}
$stmt->free_result();
if($reihen)
return $addresse;
else
return "Keine Addresse";
?>
Nun beuge ich dem eig. vor indem ich bei jedem Query ein store und free result hinhäng.
Also quasi:
PHP-Code:
<?php
$stmt = $mysqli_db->prepare("SELECT name FROM benutzer WHERE variable=? LIMIT 5;"); //gibt 5 Reihen zurück
$stmt->bind_param('d',$variable);
$variable=5;
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($name);
while ($stmt->fetch())
{
LadeAddresse($name,$mysqli_db);
}
$stmt->free_result();
?>
Von daher, wie wird ein solches Beispiel sauber umgesetzt?
Die einzige Möglichkeit die mir einfällt, ist erst alle Rückgabewerte des ersten Queries in Variablen schreiben und dann die Funktion jeweils aufrufen - allerdings sieht das nicht wirklich schön aus, kann uU einiges an Variablen auffressen und ich kann mir nicht vorstellen, dass es da keine bessere Lösung gibt.
Deswegen, gibt es eine bessere Lösung?
Danke!
Kommentar