Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Mehere sql Anfragen via PHP in einen Script?

Mitglied: blurry

blurry (Level 1) - Jetzt verbinden

30.09.2011, aktualisiert 10:56 Uhr, 6322 Aufrufe, 8 Kommentare

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.)

01.
  
02.
<? 
03.
// Aufbau einer Datenbankverbindung 
04.
	$connection = mysql_connect("localhost","root","",TRUE) 
05.
	or die ("Keine Datenbankverbindung möglich, Benutzername oder Passwort sind falsch"); 
06.
 
07.
// Auswahl einer Datenbank 
08.
	mysql_select_db("sdk-mdk", $connection
09.
	or die ("Datenbank nicht vorhanden"); 
10.
 
11.
/ Formulierung einer SQL-Abfrage 
12.
	  $sql = "SELECT xyz as name FROM kunde WHERE xyz.id = '" . $tech . "';  
13.
 
14.
// Senden der SQL Abfrage an das Datenbanksystem 
15.
	$result = mysql_query($sql, $connection); 
16.
 
17.
 // bis alle Daten aus der DB ausgelesen wurden und alle Datenbanktreffer liefert 
18.
	while ($row = mysql_fetch_array($result)) 	{ 
19.
		 
20.
// Befüllen der Platzhalter im Block xyz 
21.
	$tplkd->set('name', $row["name"]); 
22.
 
23.
// Die gefüllte Zeile in das Template schreiben 
24.
	$tpl->set('xyz', $tplkd); 
25.
 
26.
// Die gefüllte Zeile zurücksetzen 
27.
                    $tplkd->reset(); 
28.
 
29.
30.
 
31.
// Das gefüllte Template an den Client-Browser senden. 
32.
	$tpl->out(); 
33.
		 
34.
// Verbindung zur Datenbank schließen. 
35.
	mysql_close($connection); 
36.
?>
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?
Mitglied: Onkelrossie
30.09.2011 um 11:18 Uhr
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
Bitte warten ..
Mitglied: SlainteMhath
30.09.2011 um 11:18 Uhr
Moin,

das sähe in etwa so aus:
01.
  [...] 
02.
  $sql="...."; 
03.
  $result1= mysql_query($sql, $connection); 
04.
  $sql="...."; 
05.
  $result2= mysql_query($sql, $connection);   
06.
 
07.
  while ($row1 = mysql_fetch_array($result1)) { 
08.
    while ($row2 = mysql_fetch_array($result2))  { 
09.
    ... 
10.
11.
  }
lg,
Slainte
Bitte warten ..
Mitglied: blurry
30.09.2011 um 12:02 Uhr
Zitat von SlainteMhath:
Moin,

das sähe in etwa so aus:
01.
>   [...] 
02.
>   $sql="...."; 
03.
>   $result1= mysql_query($sql, $connection); 
04.
>   $sql="...."; 
05.
>   $result2= mysql_query($sql, $connection);   
06.
>  
07.
>   while ($row1 = mysql_fetch_array($result1)) { 
08.
>     while ($row2 = mysql_fetch_array($result2))  { 
09.
>     ... 
10.
>     } 
11.
>   } 
12.
> 
lg,
Slainte

aha, na da bin ich aber skeptisch. Es sollte doch zuerst eine Abfrage abgeschlossen werden bevor man mit der nächsten anfängt. Das o.g. Beispiel wäre doch sehr unschön, oder? Abgesehen davon sollte man, wie von Onkelrossie, erwähnt versucht werden soweit wie möglich alle Anfragen in eine Formulierung zu packen.
Bitte warten ..
Mitglied: blurry
30.09.2011 um 12:13 Uhr
Zitat von Onkelrossie:
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

Also mit Zeitgleich meine ich das sql-Abfragen hintereinander abgearbeitet werden. Es kann sein, dass ich nicht alles in einer einzigen sql-Abfrage formulieren kann. Deswegen müsste ich also eine zweite oder dritte in dasgleiche php-Script packen. Ich denke aber das zuerst eine Anfrage komplett abgeschlossen sein muss, bevor die nächste abgearbeitet wird (nicht wie im Beispiel von SlainteMhath s.u. dargestellt). Theoretisch kann ich auch ein neues php-Script mit einer sql-Abfrage ausarbeiten und dieses mit inkludieren. Käme in etwa auf das gleiche raus.

Was ich brauche ist eine Abfrage für die Ausgabe von Kundendaten und eine andere für die Ausgabe von 'irgendwas' aber beides soll unabhängig voneinander ins Ausgabe template befüllt werden. Theoretisch ist doch möglich aber wie sähe es sauber gestaltet praktisch aus?
Bitte warten ..
Mitglied: Onkelrossie
30.09.2011 um 12:14 Uhr
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
Bitte warten ..
Mitglied: SlainteMhath
30.09.2011 um 12:34 Uhr
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.
Bitte warten ..
Mitglied: blurry
30.09.2011 um 13:14 Uhr
O.K. danke erstmal. Muss ich probieren. Komme dann wieder darauf zurück.
Bitte warten ..
Mitglied: eisbein
30.09.2011 um 17:43 Uhr
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
Bitte warten ..
Ähnliche Inhalte
PHP
PHP Dropdownmenü mit SQL-Abfrage
gelöst Frage von tobmesPHP4 Kommentare

Hi Experten, ich glaube mein Titel ist etwas verwirrend, aber mir fällt gerade nichts besseres ein :) Also hier ...

PHP
Mit PHP SQL Array Abfrage
gelöst Frage von gamerffPHP3 Kommentare

Hallo Forum, ich bin grade an einem Projekt dran ein Telefonbuch mit Mysql, PHP und HTMl zu erstellen. Ich ...

PHP
PHP-Script um Online zu zippen
Frage von sbsnewbiePHP3 Kommentare

Hallo Admins, folgende Frage, die bestimmt easy ist, bei der ich aber gerade ein Brett vor dem Kopf habe: ...

Datenbanken
Hilfe bei SQL Script
Frage von mastertulleDatenbanken3 Kommentare

Hallo liebe Forenmitglieder und Entwickler, ich habe folgendes Problem: In unserer Datenbank gibt es mehrere Kunden die mehrmals vorhanden ...

Neue Wissensbeiträge
Windows Netzwerk
Windows Admin Center - Sagt was ihr braucht!
Tipp von Juanito vor 19 StundenWindows Netzwerk12 Kommentare

Hallo zusammen, der ein- oder andere hat sicherlich schon vom Windows Admin Center gehört. - Microsoft's neue Adminkonsole welche ...

Verschlüsselung & Zertifikate

Bitlocker-Verschlüsselung und -Monitoring ohne MBAM

Tipp von DerWoWusste vor 1 TagVerschlüsselung & Zertifikate

Der Folgende Tipp beschreibt, wie man ohne MBAM die Verschlüsselung erzwingt und monitort. MBAM ist ein Enterprise-Benefit und somit ...

Netzwerkprotokolle
IPv6 Konfiguration von Site-Site-VPN ohne feste IP
Anleitung von lcer00 vor 2 TagenNetzwerkprotokolle1 Kommentar

Hallo zusammen, vor einiger Zeit hatte ich hier eine Frage zu dem Thema gepostet: Da war noch etwas offen. ...

Verschlüsselung & Zertifikate
Nutzung von Bitlocker in virtuellen Maschinen
Tipp von DerWoWusste vor 3 TagenVerschlüsselung & Zertifikate3 Kommentare

Vorbetrachtung: Wen sollte das interessieren? Wer virtuelle Maschinen zum Test auf seiner lokalen Festplatte speichert, wird diese nur selten ...

Heiß diskutierte Inhalte
Viren und Trojaner
Viren zu Testzwecken gesucht
Frage von ElHuttiViren und Trojaner20 Kommentare

Hallo, Ich suche zum rumtrollen auf einem alten PC Viren, die: - Keine Komponenten beschädigen - Keine Auswirkungen auf ...

Voice over IP
Andere Rufnummer bei abgehenden Gesprächen vom All-IP-Anschluß der Telekom anzeigen
Frage von vafk18Voice over IP17 Kommentare

Ich möchte bei abgehenden Gesprächen vom All-IP-Anschluß der Telekom meine Handynummer hinterlegen, damit ich Rückrufe jederzeit empfangen kann. Derzeit ...

Monitoring
Empfehlung für Server-Monitoring gesucht
Frage von LordGurkeMonitoring15 Kommentare

Moin, wir sehen uns momentan ein wenig nach einer Alternative zu unserem jetzigen Server-Monitoring um. Getestet habe ich bisher ...

Windows 10
Windows 10 mit CRITICAL PROCESS DIED
Frage von liquidbaseWindows 1013 Kommentare

Das aktuelle Problem was ich habe steht bereits im Threadtitel. Etwas mehr zum Hintergrund soll nun folgen. Problemkind ist ...