Mehere sql Anfragen via PHP in einen Script?
mehere sql Anfragen zeitgleich mit PHP
Servus,
o.k. packen wir es an. Ich hätte gerne gewusst wie man in einen PHP-Script (zeitgleich) mehere unterschiedliche sql Anfragen macht ?
Zuerst kommt immer der Aufbau einer Datenbankverbindung, dann die Wahl der DB und die Formulierung einer SQL Abfrage. Also so...(xyz gilt nur als Bsp.)
Die Formatierung geht hier leider mit Copy n Paste etwas verloren aber ist nicht so entscheidend. Da ich jetzt aber nicht alles mit einer Abfrage erledigen kann und unterschiedliche Tabellen in MYSQL ansprechen will müsste ich doch mehrfach eine sql-Abfrage in das php Formular einbinden, oder?
Wie sähe dann so etwas formgerecht aus?
Servus,
o.k. packen wir es an. Ich hätte gerne gewusst wie man in einen PHP-Script (zeitgleich) mehere unterschiedliche sql Anfragen macht ?
Zuerst kommt immer der Aufbau einer Datenbankverbindung, dann die Wahl der DB und die Formulierung einer SQL Abfrage. Also so...(xyz gilt nur als Bsp.)
<?
// Aufbau einer Datenbankverbindung
$connection = mysql_connect("localhost","root","",TRUE)
or die ("Keine Datenbankverbindung möglich, Benutzername oder Passwort sind falsch");
// Auswahl einer Datenbank
mysql_select_db("sdk-mdk", $connection)
or die ("Datenbank nicht vorhanden");
/ Formulierung einer SQL-Abfrage
$sql = "SELECT xyz as name FROM kunde WHERE xyz.id = '" . $tech . "';
// Senden der SQL Abfrage an das Datenbanksystem
$result = mysql_query($sql, $connection);
// bis alle Daten aus der DB ausgelesen wurden und alle Datenbanktreffer liefert
while ($row = mysql_fetch_array($result)) {
// Befüllen der Platzhalter im Block xyz
$tplkd->set('name', $row["name"]);
// Die gefüllte Zeile in das Template schreiben
$tpl->set('xyz', $tplkd);
// Die gefüllte Zeile zurücksetzen
$tplkd->reset();
}
// Das gefüllte Template an den Client-Browser senden.
$tpl->out();
// Verbindung zur Datenbank schließen.
mysql_close($connection);
?>
Die Formatierung geht hier leider mit Copy n Paste etwas verloren aber ist nicht so entscheidend. Da ich jetzt aber nicht alles mit einer Abfrage erledigen kann und unterschiedliche Tabellen in MYSQL ansprechen will müsste ich doch mehrfach eine sql-Abfrage in das php Formular einbinden, oder?
Wie sähe dann so etwas formgerecht aus?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 173980
Url: https://administrator.de/forum/mehere-sql-anfragen-via-php-in-einen-script-173980.html
Ausgedruckt am: 09.04.2025 um 10:04 Uhr
8 Kommentare
Neuester Kommentar
Hallo,
was stellst du dir unter "Zeitgleich" vor bzw. was willst du damit bezwecken? Ist doch egal ob mehrere Abfragen nacheinander ausgeführt werden. Wenn du darauf aus bist dass PHP nur eine einzelne Query sendet dann musst du Transactions nutzen. Das ist allerdings nicht bei MyISAM Tabellen, wohl aber bei InnoDB möglich. Aber für den Zweck sind Transactions eigentlich nicht gedacht bzw. würde das auch keinen Zeitlichen unterschied machen. Du könntest deine Abfragen so kompakt wiemöglich halten. Meist kann man mehrere Querys so umgestalten dass daraus eine einzige wird (z.B.mit Joins und Subselects). Aber dadurch geht meist auch nichts schneller bzw. eher nur langsamer als vorher. Das muss man eben selber sehen bzw. kommt es auf die Anwendung drauf an die man erstellen will, was die beste Variante ist. So Pauschal ohne weitere Infos kann man da also keinen konkreten Tipp geben. In den meisten Fällen wirst du also mehrere einzelne Abfragen nacheinander haben.
Wolfgang
was stellst du dir unter "Zeitgleich" vor bzw. was willst du damit bezwecken? Ist doch egal ob mehrere Abfragen nacheinander ausgeführt werden. Wenn du darauf aus bist dass PHP nur eine einzelne Query sendet dann musst du Transactions nutzen. Das ist allerdings nicht bei MyISAM Tabellen, wohl aber bei InnoDB möglich. Aber für den Zweck sind Transactions eigentlich nicht gedacht bzw. würde das auch keinen Zeitlichen unterschied machen. Du könntest deine Abfragen so kompakt wiemöglich halten. Meist kann man mehrere Querys so umgestalten dass daraus eine einzige wird (z.B.mit Joins und Subselects). Aber dadurch geht meist auch nichts schneller bzw. eher nur langsamer als vorher. Das muss man eben selber sehen bzw. kommt es auf die Anwendung drauf an die man erstellen will, was die beste Variante ist. So Pauschal ohne weitere Infos kann man da also keinen konkreten Tipp geben. In den meisten Fällen wirst du also mehrere einzelne Abfragen nacheinander haben.
Wolfgang
Nein das hast du falsch verstanden. Man kann versuchen so viel wie Möglich mit einer Abfrage zu bewerkstelligen. Allerdings ist das nur in den seltensten Fällen von Vorteil! Meist wirst du wie schon gesagt mehrere einzelne Abfragen benötigen welche dann oft auch schneller sind als eine einzelne große. Es kommt eben immer auf die Anwendung an die man erstellen will, was die bessere Lösung ist. Eine perfekte Lösung gibt es somit nicht.
Das Beispiel von Slainte ist absolut korrekt so. Die 1. Abfrag wird doch abgeschlossen bevor die 2. gestartet wird. Anders ist es gar nicht möglich! Erst wird die erste Abfrage ausgeführt und abgeschlossen und das Ergebnis in $result1 gespeichert:
$result1= mysql_query($sql, $connection);
Danach wir dann die 2. Abfrage ausgeführt und in $result2 gespeichert:
$result2= mysql_query($sql, $connection);
Danach kannst du mit $result1 und $result2 machen was du willst z.B. wie in seinem Beispiel eine verschachtelte Schleife anlegen in der beide Ergebnismengen durchlaufen werden. Das hat mit der Datenbank bzw. MYSQL Abfragen dann schon gar nichts mehr zu tun!
Gruß,
Wolfgang
Das Beispiel von Slainte ist absolut korrekt so. Die 1. Abfrag wird doch abgeschlossen bevor die 2. gestartet wird. Anders ist es gar nicht möglich! Erst wird die erste Abfrage ausgeführt und abgeschlossen und das Ergebnis in $result1 gespeichert:
$result1= mysql_query($sql, $connection);
Danach wir dann die 2. Abfrage ausgeführt und in $result2 gespeichert:
$result2= mysql_query($sql, $connection);
Danach kannst du mit $result1 und $result2 machen was du willst z.B. wie in seinem Beispiel eine verschachtelte Schleife anlegen in der beide Ergebnismengen durchlaufen werden. Das hat mit der Datenbank bzw. MYSQL Abfragen dann schon gar nichts mehr zu tun!
Gruß,
Wolfgang
versucht werden soweit wie möglich alle Anfragen in eine Formulierung zu packen
Theoretisch ja. Wenn jedoch Abfrage A nichts mit Abfrage B zu tun hat, kannst Sie auch nicht (per SELECT ...JOIN...) verknüpfen Also brauchst Du 2 SELECTs.Ob Du dann die 2 While's verschachtelst (so wie in meinen Beispiel) oder nacheinander ausführst hängt von der Programm logik ab.
Hallo!
Zum Thema SQL gibts auch sehr gute Beispiele, die sich leicht googeln lassen. Da wird auch der Unterschied bei den JOINS etc. klarer.
Bzgl. Zeit brauchst du dir erst Gedanken machen wenn es sich um viele (!) Datensätze handelt, in der Regel dauert eine Abfrage zwischen 0,002 - 0,005 Sekunden. Da wiegt das Problem, dass MySQL eine schwache Verbindung zum Webserver hat viel mehr....
eisbein
Zum Thema SQL gibts auch sehr gute Beispiele, die sich leicht googeln lassen. Da wird auch der Unterschied bei den JOINS etc. klarer.
Bzgl. Zeit brauchst du dir erst Gedanken machen wenn es sich um viele (!) Datensätze handelt, in der Regel dauert eine Abfrage zwischen 0,002 - 0,005 Sekunden. Da wiegt das Problem, dass MySQL eine schwache Verbindung zum Webserver hat viel mehr....
eisbein