Viele MySQL Anweisungen in Schleife
Merde
- php
0 Kalle_B0 Rouven0 Vinzenz Mai0 Kalle_B0 Tom0 Vinzenz Mai0 Tom
Tag schön..
Ich muss ca. 450 Update Anweisungen per PHP ausführen (es sind effektiv aber wesentlich mehr Datensätze betroffen, da ich eine WHERE Abfrage drin habe, die jeweils auf ungefähr 50 Datensätze zutrifft).
Wenn ich das alles in einer Schleife laufen lasse muss ich in der php.ini die max_execution_time auf ca. 300 stellen, da ich sonst eine Fehlermeldung bekomme, dass die Zeit überschritten wird.
Kennt jemand eine andere und vor allem schnellere Möglichkeit?
Merde
Tag auch..
Ich muss ca. 450 Update Anweisungen per PHP ausführen
und ich 13.000 inserts beim Kopieren einer Datenbank (Sicherheitskopie).
Wenn ich das alles in einer Schleife laufen lasse muss ich in der php.ini die max_execution_time auf ca. 300 stellen, da ich sonst eine Fehlermeldung bekomme, dass die Zeit überschritten wird.
Ich komme an meine php.ini nicht dran, ist auf dem gemieteten Webspace.
Kennt jemand eine andere und vor allem schnellere Möglichkeit?
Kann man nicht alle 450 SQL- Kommandos in einen String schreiben und an MySQL übergeben? Das muss ich noch testen.
Kalle
Hi,
Kann man nicht alle 450 SQL- Kommandos in einen String schreiben und an MySQL übergeben? Das muss ich noch testen.
Das wird bei PHP schwierig, da aus Sicherheitsgründen (die Sache mit dem 'aus einem Befehl mach zwei durch SQL-Injection') von mysql_query nur eine einzelne Anweisung zugelassen wird.
Solange du es also nicht schaffst, deine Anweisungen in eine große Anweisung zu verwandeln wird dich diese Suche nicht viel weiter bringen.
MfG
Rouven
Hi,
Kann man nicht alle 450 SQL- Kommandos in einen String schreiben und an MySQL übergeben? Das muss ich noch testen.
Das wird bei PHP schwierig, da aus Sicherheitsgründen (die Sache mit dem 'aus einem Befehl mach zwei durch SQL-Injection') von mysql_query nur eine einzelne Anweisung zugelassen wird.
Genau das ist das Problem. Aber dazu habe ich mal eine Frage:
Kann man diese Einstellung in MySQL ändern?
echo $begrüßung;
Das wird bei PHP schwierig, da aus Sicherheitsgründen (die Sache mit dem 'aus einem Befehl mach zwei durch SQL-Injection') von mysql_query nur eine einzelne Anweisung zugelassen wird.
Das ist keine PHP-Einschränkung sondern eine in MySQL. PHP lässt alle Statements ungeprüft durch. MySQL gibt aber nur eine Fehlermeldung zurück. (Syntax-Error ab dem Semikolon)
Kann man diese Einstellung in MySQL ändern?
Nicht mit der mysql-Erweiterung von PHP sondern nur mit der mysqli-Erweiterung, die es ab PHP5 gibt.
Siehe:
echo "$verabschiedung $name";
Hallo Kalle,
und ich 13.000 inserts beim Kopieren einer Datenbank (Sicherheitskopie).
Wo ist das Problem? Es gibt die Multiple-Row-INSERT-Syntax, siehe MySQL-Handbuch, INSERT-Syntax.
Oder ist Deine MySQL-Version mal wieder zu alt dafür.
Freundliche Grüße
Vinzenz
Hallo Vinzenz,
Wo ist das Problem? Es gibt die Multiple-Row-INSERT-Syntax, siehe MySQL-Handbuch, INSERT-Syntax.
Oder ist Deine MySQL-Version mal wieder zu alt dafür.
Nöö, habe ich gleich mal mit 5 Datensätzen ausprobiert. Hat gefunzt.
Danke für den Tipp.
Lieben Gruß, Kalle
Hello,
Wo ist das Problem? Es gibt die Multiple-Row-INSERT-Syntax, siehe MySQL-Handbuch, INSERT-Syntax.
Die aht aber den wesentlichen Nachteil, dass man keine vernünftige Erfolgsmeldung/Fehlermeldung erhält, und auch die LastInsertId nicht zugehörig abfragen kann.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hallo Tom,
Wo ist das Problem? Es gibt die Multiple-Row-INSERT-Syntax, siehe MySQL-Handbuch, INSERT-Syntax.
Die aht aber den wesentlichen Nachteil, dass man keine vernünftige Erfolgsmeldung/Fehlermeldung erhält,
wieso nicht? mysql_affected_rows() sollte reichen.
und ich 13.000 inserts beim Kopieren einer Datenbank (Sicherheitskopie).
und auch die LastInsertId nicht zugehörig abfragen kann.
was in der Problemstellung von Kalle nicht erforderlich ist.
Freundliche Grüße
Vinzenz
Hello,
wieso nicht? mysql_affected_rows() sollte reichen.
Wenn ich 60 Inserts durchzuführen habe, und dann anschließend mysql_affected_rows() == 59 ist, welches der 60 Inserts ist dann schiefgegangen?
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom