php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 19-11-2006, 11:12
Gpunkt
 Newbie
Links : Onlinestatus : Gpunkt ist offline
Registriert seit: Nov 2006
Beiträge: 14
Gpunkt ist zur Zeit noch ein unbeschriebenes Blatt
Standard [SQL allgemein] Zusammengefasste Queries - in SQL ja, in PHP nein

Hallo!

Um Leistung zu sparen habe ich aktuell eine Optimierung meiner Scripte in Angriff genommen, konkret geht es mir vorläufig um Zusammenfassen vo Queries.

Ein mit PHP zu einer Abfrage generiertes Query sieht z.B. so aus:

PHP-Code:
UPDATE `tableSET `column1`="text1" WHERE `column2`="xyz";
UPDATE `tableSET `column2`="text2" WHERE `column2`="abc"
Die Sache ist nun die - in PHP verursacht das Ding Fehlermeldungen, in PHPMyAdmin kann ich die Queries jedoch ohne Probleme ausführen!

Die Fehlermeldung in PHP lautet: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ';INSERT INTO `table_x` (`column_a`,`column_b`,`column_c`,' at line 32

Also ich werde aus dieser Meldung nicht schlau, und schon garnicht aus dem merkwürdigen Verhalten was ich oben beschrieben habe. Wäre nett wenn mir jemand einen Denkanstoß verpassen könnte.
Mit Zitat antworten
  #2 (permalink)  
Alt 19-11-2006, 11:58
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard Re: [SQL allgemein] Zusammengefasste Queries - in SQL ja, in PHP nein

Eine Fehlermeldung, die sich auf ";INSERT ..." bezieht, kann wohl kaum von deinen UPDATE-Queries herstammen - vielleicht schaust du erst mal in der richtigen Zeile nach ...?

Und dann informierst du dich vielleicht noch mal, wie viele Queries man über die benutzte API-Funktion auf einmal absetzen kann.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 19-11-2006, 12:02
Gpunkt
 Newbie
Links : Onlinestatus : Gpunkt ist offline
Registriert seit: Nov 2006
Beiträge: 14
Gpunkt ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Stimmt, da ist mir ein Fehler unterlaufen, allerdings ändert das nichts an der Tatsache dass es grundsätzlich nicht geht. Auch das Update-Query funktioniert nicht.

Hier nochmal eine Vereinfachung des Insert-parts:

PHP-Code:
INSERT INTO `table` (`column_a`,`column_b`) VALUES ("abc","def");
INSERT INTO `table` (`column_a`,`column_b`) VALUES ("ghi","jkl"); 
Mit Zitat antworten
  #4 (permalink)  
Alt 19-11-2006, 12:21
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Ja, fein - offenbar hast du jetzt bereits ca. die Hälfte der Antwort zur Kenntnis genommen.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #5 (permalink)  
Alt 19-11-2006, 12:28
Gpunkt
 Newbie
Links : Onlinestatus : Gpunkt ist offline
Registriert seit: Nov 2006
Beiträge: 14
Gpunkt ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wieviel Queries ich absetzen kann habe ich nicht gefunden, aber zu Testzwecken sind es 2, daran solls nicht scheitern.
Mit Zitat antworten
  #6 (permalink)  
Alt 19-11-2006, 12:44
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Gpunkt
Wieviel Queries ich absetzen kann habe ich nicht gefunden, aber zu Testzwecken sind es 2, daran solls nicht scheitern.
du möchtest hier nochmal lesen: http://de3.php.net/manual/de/function.mysql-query.php
__________________
Kissolino.com
Mit Zitat antworten
  #7 (permalink)  
Alt 19-11-2006, 13:35
Gpunkt
 Newbie
Links : Onlinestatus : Gpunkt ist offline
Registriert seit: Nov 2006
Beiträge: 14
Gpunkt ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Es ist also so, dass wirklich nur 1 Query möglich ist.

Was mich wundert - wie kommt dieser Typ dann auf folgenden Tip:

"Auch häufig falsch gemacht: INSERT, UPDATE und DELETE Befehle werden nicht zusammengefasst, um alles auf einmal mit einem Query ausführen. Stattdessen wird jedes einzelne SQL-Query auch einzeln an die Datenbank gesendet. Das kostet sehr viel Laufzeit.
In der ersten Schleife werden 100 SQL-Querys gemacht. In der zweiten Schleife wird 100 mal in einen String geschrieben und 1 Query abgesetzt. Jeder kann sich denken was schneller ist. Das trifft übrigens auf den INSERT Befehl, genau wie auch auf die Befehle UPDATE und DELETE zu. Es macht also Sinn für eine Software einen I/U/D-SQL Befehlspuffer aufzubauen. Gerade bei umfangreichen Anwendungen kann mit einem Klick doch recht intensiv auf die Datenbank zugegriffen werden, da lohnt sich eine fest implementierte Funktion für diese Dinge."
Mit Zitat antworten
  #8 (permalink)  
Alt 19-11-2006, 14:10
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Gpunkt
Was mich wundert - wie kommt dieser Typ dann auf folgenden Tip:
keine ahnung. frag ihn ... vielleicht macht er es (in seiner db-klasse) wie phpMyAdmin. afaik splittet pma die queries am semikolon und setzt die einzel-queries in einer schleife ab.

wenn du inserts auf EINE tabelle zusammenfassen willst, kannst du das so aufbauen:
Code:
INSERT INTO 
    tabelle (s1, s2, s3, ...) 
VALUES 
    (v1, v2, v3, ...), 
    (v1a, v2a, v3a, ...), 
    (v1b, v2b, v3b, ...), 
...
deletes und updates auf mehrere datensätze lassen sich mit WHERE IN () zusammenfassen, wenn man will/kann.
__________________
Kissolino.com
Mit Zitat antworten
  #9 (permalink)  
Alt 19-11-2006, 14:19
Gpunkt
 Newbie
Links : Onlinestatus : Gpunkt ist offline
Registriert seit: Nov 2006
Beiträge: 14
Gpunkt ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke, die Möglichkeit hab ich noch garnicht in Erwägung gezogen.

Die Sache mit dem Aufsplitten macht ja wenig Sinn - da ist eine bereits vorhandene Schleife schneller.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:58 Uhr.