DB abfrage in Schleife
Dave
- datenbank
Hallo zusammen
Ich habe folgende Frage. Ich habe eine DB-Schleife und möchte innerhalb dieser Schleife erneut eine DB-Abfrage machen nur gelingt mir das nicht. Was mache ich falsch?
$dbh = DBI->connect($db_dsb, $sqlusr, $sqlpw) or return $sqlmsg = "MySQL Verbindungsfehler: $DBI::errstr";
$query = "SELECT * FROM kunden ORDER BY Name_KA";
$sth = $dbh->prepare($query);
$sth->execute();
$sth->bind_columns(undef, ($kundennr, $Kundenstat_KA, $Anrede_KA));
while($sth->fetch())
{
$query = "SELECT PD_ID, PD_Text, PD_Preis FROM produkte WHERE PD_ID = '$kundennr'";
$sth = $dbh->prepare($query);
$sth->execute();
$sth->bind_columns(undef, ($PD_ID, $PD_Text, $PD_Preis));
$sth->fetch();
$sth->finish();
$dbh->disconnect;
$mach_irgendwas = "$PD_ID";
}
$sth->finish();
$dbh->disconnect;
Hallo Dave,
Ich habe folgende Frage. Ich habe eine DB-Schleife und möchte innerhalb dieser Schleife erneut eine DB-Abfrage machen nur gelingt mir das nicht. Was mache ich falsch?
Du begehst einen typischen Anfängerfehler. Du willst händisch das tun, was die DB viel besser kann. Du suchst den JOIN. Du benötigst eine einzige SQL-Anweisung, nicht mehr :-)
In SELFHTML Aktuell gibt es zwei Artikel zu Joins:
Du solltest Dir zunächst Rouvens Einführung durcharbeiten. Es lohnt sich.
Freundliche Grüße
Vinzenz
Hi Vinzenz
Super! Besten Dank für die Ausführungen. Bin wirklich noch nicht so erfahren.
Grüsse Dave
echo $begrüßung;
$sth = $dbh->prepare($query);
while($sth->fetch())
$sth = $dbh->prepare($query);
[...]
}
Du verwendest für die innere Abfrage die gleiche Variable wie für die äußere, und überschreibst deren Inhalt. Damit kann die äußere Abfrage bei einem zweiten Schleifendurchlauf nicht mehr funktionieren.
Abgesehen von diesem Fehler solltest du Vinzenz' Vorschlag beachten.
echo "$verabschiedung $name";