Portal > Foren > PHP > PHP-Programmierung > mehrere MySQL-Befehle in eine Query -- wie geht das?
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 12.08.2007, 17:43 Nach oben    #1
/(bb|[^b]{2})/
 
Registriert seit: 05.11.2006
Beiträge: 29
Standard mehrere MySQL-Befehle in eine Query -- wie geht das?

Tach,

ich will ein Script schreiben, das eine Tabelle aktualisiert. Damit ich nicht zig Querys nacheinander absetzen muss (und eventuell gegen einen Query/Minute-Limit stoße), will ich mehrere Befehle in einen Query packen. Bei phpMyAdmin geht das auch, wenn ich da mehrere Befehle angebe und einen falsch schreibe, dann zeigt er mir an "mysql meldet: error near ... at line 2". Wenn ich bei meinem script zwischen die einzelnen Befehle ";\r\n" setze, funktioniert das nicht, mysql gibt aus "error at line 1". Auch eine ausgiebige Recherche im Internet hat nichts gebracht, ich weiß aber aus phpmyadmin, dass es gehen muss.

Weiß jemand, wie man das macht?

MfG, Ilinsekt
Ilinsekt ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.08.2007, 17:49 Nach oben    #2
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.203
Standard

Trotzdem wird es bei pma als mehrere querys ausgeführt, er hat nur einen Parser, der die Querys trennt und dann einzeln ausführt.

was man machen kann, ist Insert zum beispiel zusammenfassen:

Code:
INSERT INTO  table (spalte1)VALUES ('val1'), 
('val2'),
......
('valx');
so kann man viele Datensätze auf einmal einfügen.

Andere Möglichkeit ist zum Beispiel wenn man mehrere Querys hat, diese einfach zu trennen, einen einfacher Ansatz gibts hier:
http://www.phpfriend.de/forum/ftopic62425.html
Nutze ich selbst bei einem Script für den schnellen Import einer SQL, wenn es genauer sein soll, wirst du dir wohl mal pma anschauen müssen und gucken wie das dort genau gelöst wird.
robo47 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.08.2007, 17:59 Nach oben    #3
/(bb|[^b]{2})/
 
Registriert seit: 05.11.2006
Beiträge: 29
Standard

Es geht mir aber nicht um INSERT sondern um UPDATE mit unterschiedlichen WHERE-Bedingungen. Und wenn pma das in Einzelquerys auftrennen würde, dann würde mysql den Fehler in Zeile 1 bringen, nicht in Zeile 2.
Ilinsekt ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.08.2007, 18:22 Nach oben    #4
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.203
Standard

mit Update funktioniert das ganze leider nicht.

Also ich weis ja nicht was dein PMA als Anbindung nutzt, mysql oder mysqli und wie dein Query und alles ausschaut, aber
1) pma nutzt im normalfall mysql_query. das unterstützt keine anfragen die mehr als ein Query unterstützen [http://php.net/mysql_query -> findet sich in den Kommentaren] damit ist es dann nur möglich

2) dein pma nutzt mysqli und arbeitet eventuell mit: http://www.php.net/manual/de/functio...ulti-query.php

aber selbst bei 2) sollte die Ausgabe nicht auf die Zeile innerhalb des Textblocks den man abschickt stimmen, sondern auf das spezifische Query.

Ich würde das ganze gerne mal bei mir lokal nachvollziehen können, weil ich ehrlichgesagt glaube, dass einfach dein query in irgendeiner Form bei PMA 2-zeilig ankommt und deshalb dieser Fehler bei dir auftritt, bei allen meinen Versuchen eben lokal, konnte ich es nämlich nicht hinbekommen, dass bei mehreren einzeiligen Querys und einem fheler in einem dieser, in line 2 oder höher ausgegeben wird.

Könntest du vielleicht mal ein Create-Befehl für deine Tabelle und den passenden Query-Block posten bei dem das passiert ?

mfg
robo47
robo47 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.08.2007, 18:47 Nach oben    #5
/(bb|[^b]{2})/
 
Registriert seit: 05.11.2006
Beiträge: 29
Standard

http://img233.imageshack.us/img233/171/pmagf7.jpg

Nach einem Klick auf OK unter dem Eingabefeld folgendes:

http://img233.imageshack.us/img233/1078/pma2dd2.jpg

// edit by Jann Hendrik:
Ich habe aus dem img-tag ein url-tag gemacht, weil die eingebundenen Bilder zu große Dimensionen haben.

Geändert von Jann Hendrik (13.08.2007 um 15:02 Uhr)
Ilinsekt ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.08.2007, 18:53 Nach oben    #6
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.203
Standard

dann schau dir jetzt mal Bild 2 an
Und schau was unter da unter SQL-Befehl steht!OR deinem Query ist!
-> Ein Kommentar, ein Zeilen Umbruch und dann dein Query.

damit sind es 2 Zeilen
robo47 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.08.2007, 18:53 Nach oben    #7
Erfahrener Benutzer
 
Benutzerbild von Bleistift
 
Registriert seit: 31.12.2006
Ort: Zürich
Beiträge: 304
Standard

Tja... Ich kenne auch keine Funktion "UPATE"... Was soll denn da passieren? :/
__________________
. <-- This is Punkt. Copy Punkt into your signature to help him on his way to world domination.
Bleistift ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.08.2007, 19:01 Nach oben    #8
/(bb|[^b]{2})/
 
Registriert seit: 05.11.2006
Beiträge: 29
Standard

Ich weiß, dass es zwei Zeilen sind, aber wenn ich PHP z.B. sowas mache:

PHP-Code:
$query=$query1."\r\n".$query2;
mysql_query($query); 
Dann sagt der, das ist Zeile 1.
Ilinsekt ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.08.2007, 19:29 Nach oben    #9
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.203
Standard

Zitat:
Zitat von Ilinsekt Beitrag anzeigen
Ich weiß, dass es zwei Zeilen sind, aber wenn ich PHP z.B. sowas mache:

PHP-Code:
$query=$query1."\r\n".$query2;
mysql_query($query); 
Dann sagt der, das ist Zeile 1.
Da verstehe ich jetzt gerade den Zusammenhang nicht, oder geht es darum wo der Fehler auftritt ? Genauso wie bei PHP muss ein Fehler in Zeile XY nicht unbedingt bedeuten dass er genau dort angesiedelt ist, es kann auch das Ende sein (dort wo der Fehler erst erkannt wird) oder der Anfang (weil der Fehler schon hier erkannt wird, bzw. hier der Anfang des Problems auftaucht.
robo47 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.08.2007, 19:41 Nach oben    #10
Erfahrener Benutzer
 
Benutzerbild von Bleistift
 
Registriert seit: 31.12.2006
Ort: Zürich
Beiträge: 304
Standard

Zitat:
Zitat von Ilinsekt Beitrag anzeigen
Ich weiß, dass es zwei Zeilen sind, aber wenn ich PHP z.B. sowas mache:

PHP-Code:
$query=$query1."\r\n".$query2;
mysql_query($query); 
Dann sagt der, das ist Zeile 1.
Das klappt so nicht weil:
Zitat:
Zitat von php.net
mysql_query() sends an unique query (multiple queries are not supported)
__________________
. <-- This is Punkt. Copy Punkt into your signature to help him on his way to world domination.
Bleistift ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.08.2007, 19:45 Nach oben    #11
/(bb|[^b]{2})/
 
Registriert seit: 05.11.2006
Beiträge: 29
Standard

achso ok. Dann werde ich wohl bei meiner Lösung mit den Einzelquerys bleiben. Danke trotzdem.

MfG, Ilinsekt
Ilinsekt ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.08.2007, 21:38 Nach oben    #12
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 684
Standard

Moin!

Vielleicht hilft dir das hier: http://dev.mysql.com/doc/refman/5.0/...rocedures.html weiter? Mit im Datenbank-Server gespeicherten Queries ließen sich ohne Probleme mehrere Queries mittels "eines Queries" ausführen.

Vielleicht ist es das, was du gesucht hast!?
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Dynamische mySQL Query la-finest PHP-Programmierung 2 25.01.2007 16:36
Auslesen zweier verschiedener Datensätze in einem Query (mySQL) Chr!s Datenbanken 8 14.11.2006 19:57
MySQL Fehlermeldung: Your query requires a full tablescan ... Chr!s Datenbanken 12 31.07.2006 21:45
MySQL Query wird nicht ausgeführt Garnele Datenbanken 6 01.04.2006 03:17
MySQL 5.1 kommt in die Beta-Phase Ben Nachrichten 1 02.03.2006 14:31


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:05 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45