| | | | |
| |||||||
| Datenbanken SQL und Co |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | ||
| moderatives Dielektrikum Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Zitat:
__________________ -- One pixel is still too big. Please make it smaller. ASAP. Initiative Mittelstand. Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers. -- | |
| | |
| | |
| Neuer Benutzer Registriert seit: 22.01.2010
Beiträge: 25
PHP-Kenntnisse: Fortgeschritten ![]() | Würd' glaub nix bringen, den ganzen php Code hier reinzupasten. Und sollte ja auch egal sein, oder? ![]() ich ruf... Code: mysqli_multi_query($db, $sql)
or die ("MySQL attractivity update query error: " . mysqli_error($db));
Crazy.... Hab grad mal ein paar "mysqli_next_result($db);"s angehängt nach der Abfrage... mit jeder rückt das NULL eine Zeile runter. Code: mysqli_multi_query($db, $sql)
or die ("MySQL attractivity update query error: " . mysqli_error($db));
echo mysqli_next_result($db); //1
echo mysqli_next_result($db); //2
echo mysqli_next_result($db); //3
echo mysqli_next_result($db); //4
echo mysqli_next_result($db); //5
echo mysqli_next_result($db); //6
echo mysqli_next_result($db); //7
echo mysqli_next_result($db); //8
echo mysqli_next_result($db); //9
echo mysqli_next_result($db); //10
echo mysqli_next_result($db); //11
![]() ![]() Was zum...?! ![]() Geändert von Samhayne (07.02.2010 um 00:19 Uhr). |
| | |
| | |
| Neuer Benutzer Registriert seit: 22.01.2010
Beiträge: 25
PHP-Kenntnisse: Fortgeschritten ![]() | Okay... wie's aussieht, muss man die ganzen results wohl ablaufen. Gestalte ich die Abfrage so: Code: if (mysqli_multi_query($db, $sql))
{
while (mysqli_more_results($db))
{
mysqli_next_result($db);
}
}
Tut man das nicht, winkt einem bei der nächsten DB Abfrage obendrein ein "Commands out of sync". Blöderweise frisst die ganze Prozedur sportliche 2 Sekunden. Der einmalige Aufruf mit einen "Null" Eintrag als Schönheitsfehler dauerte nur 0.002 Sekunden. Unbefriedigend. Geändert von Samhayne (07.02.2010 um 10:52 Uhr). |
| | |
| | |
| Neuer Benutzer Registriert seit: 22.01.2010
Beiträge: 25
PHP-Kenntnisse: Fortgeschritten ![]() | Hab mal ein Testscript geschrieben. (siehe Anhang) - createTimetable() erstellt obige Tabelle "timetable_test" in Eurer Datenbank. Parameter: true / false true: Results werden nacheinander mit mysqli_next_result() abgeklappert false: Es wird nur ein mysqli_multi_query() ausgeführt ... ohne anschließendes abklappern - showTimetable() zeigt die Tabelle an. Der Datenbanklink wird am Ende von createTimetable() einfach geschlossen und bei showTimetable() wieder neu geöffnet um den "Commands out of sync" Fehler zu umgehen. Ich find's verrückt. PHP-Code: Führt man danach das Script nochmal aus mit: PHP-Code: Und nur bei PHP-Code: |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 14.06.2009
Beiträge: 1.576
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Kann ich alles bestätigen, nur braucht Szenario 3 bei mir nicht 2 Sekunden, sondern 60 ms. Was genau bei dem Verbindungsabbruch und -neuaufbau geschieht, darüber kann ich auch bloß spekulieren. Aber die Vorgehensweise, den "commands out of sync"-Fehler zu umgehen, indem die Verbindung abgewürgt wird, ist schon recht unorthodox. Ist die Datenbank vielleicht so stark überlastet oder schwer zu erreichen, dass die UPDATE-Queries ewig brauchen? Hast du mal versucht, sie im phpMyAdmin oder so auszuführen? Na ja, ich stochere nur im Dunkeln. Ne wirkliche Idee habe ich nicht, sorry. Alternative wäre vielleicht ein prepared statement statt der Multiquery. (Ich habe keine Ahnung.) Aber eine Erklärung ist das auch nicht. |
| | |
| | |
| Neuer Benutzer Registriert seit: 22.01.2010
Beiträge: 25
PHP-Kenntnisse: Fortgeschritten ![]() | Hey mermshaus. ![]() Danke, daß Dich durchgewuselt hast. 60ms?? Hmmm... vielleicht sind mein 1,4GHz Centrino und seine 5400UPM Festplatte einfach unendlich überfordert. Während den 2 Sekunden rödelt die Festplatte jedenfalls wie bekloppt. Multiquerys klangen einfach superinteressant.... grad für updates. Aber wenn man dann trotzdem für jede Zeile nochmal zur Datenbank funken muss, wird das ganze irgendwie absurd. Ich hab mir jetzt ein wildes Update query mit vielen cases und wheres gebastelt um die Tabelle mit einer einzigen Query zu updaten. Damit bin ich nun bei 0.1sec. Lässt sich natürlich auch nicht immer so machen... zumindest wenn man dabei halbwegs pragmatisch bleiben will. Multi_Querys wären schon schicker gewesen... aber irgendwie scheinen die 'ne Mogelpackung zu sein. (???) edit: Der Verbindungsabbruch wäre live natürlich keine gute Idee. Aber hier würd' er ohne das Abwürgen wegen dem Error kein Ergebnis ausgeben im Testscript. Geändert von Samhayne (07.02.2010 um 13:12 Uhr). |
| | |
| | ||
| Neuer Benutzer Registriert seit: 22.01.2010
Beiträge: 25
PHP-Kenntnisse: Fortgeschritten ![]() | Da's nur updates sind, liefern die Querys nur True zurück. Drum gibt's auch nix zu closen. Schon prozedural probiert heute morgen... Hab's nun auch mal so reingehackt... Zitat:
![]() Und mit next_result acker ich das Ding ja schon durch... Funktioniert dann zwar... aber wie gesagt... irgendwie macht das den multi query für mich absurd, da für jedes next nochmal die db kontaktiert zu werden scheint um (in dem Fall) das TRUE abzuholen. | |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Erledigt] Menü ein - und ausklappen | abdullah | JavaScript, Ajax und mehr | 8 | 27.02.2010 23:54 |
| eintrag nur wählen wenn zugehöriger eintrag in anderer tabelle. | Trallalla | Datenbanken | 5 | 28.01.2010 10:16 |
| 2 <form> überschneiden sich... | voda | HTML, Usability und Barrierefreiheit | 16 | 06.08.2009 11:35 |
| Array eintrag für Eintrag durchgehen und jeweils Feld hinzufügen | Stephan_87 | PHP Tipps 2009 | 3 | 12.02.2009 19:23 |
| Sortierreihenfolge nach Eintrag oder letzter Änderung | leuktra | Datenbanken | 7 | 29.01.2007 19:20 |
| UPDATE eintrag falls vorhanden ansonsten INSERT | Plague | Datenbanken | 4 | 19.01.2007 13:36 |
| [Erledigt] 'Sender:' Eintrag im Mailheader | PHP-Fortgeschrittene | 2 | 01.10.2006 17:00 | |
| Mysql Eintrag über mehrere Zeielne Eintrag funzt nicht | PHP Tipps 2006 | 3 | 14.03.2006 19:38 | |
| Menü mit Unterpunkten | supertramp | Beitragsarchiv | 7 | 18.10.2005 22:40 |
| PHP klappmenü | PHP Tipps 2005-2 | 1 | 15.10.2005 00:31 | |
| Eintrag wird nicht eingetragen (Kontrollfunktion lügt?) | PHP Tipps 2005-2 | 0 | 02.10.2005 12:00 | |
| Nächsten Eintrag in der mySQL DB auslesen | Datenbanken | 6 | 14.09.2005 13:24 | |
| [Erledigt] Chat aktualisieren bei neuem eintrag... | PHP-Fortgeschrittene | 2 | 24.04.2005 15:11 | |
| Wie kann ich den lezten Eintrag wieder auslesen? | Pimbolie1979 | Datenbanken | 7 | 19.08.2004 10:49 |
| Abfrage ob Eintrag schon in DBbevor Eintrag gespeichert wird | Datenbanken | 6 | 06.08.2004 22:10 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| mysqli_multi_query, php mysqli_multi_query, mysqli_multi_query(), was ist andhout?, mysqli_multi_query php, phpmyadmin unter myserver.dev einrichten, update mysqli_multi_query, mysqli_multi_query mysqli_error |