1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Plugin startet Datei *.SQL auf externer DB + Fehlermeldung

Dieses Thema im Forum "Plugins und Widgets" wurde erstellt von wirreparieren, 13. März 2019.

  1. wirreparieren

    wirreparieren Member

    Registriert seit:
    9. Januar 2019
    Beiträge:
    12
    Zustimmungen:
    0
    Ein freundliches Hallo in die Runde, folgender Sachverhalt macht mir Sorgen und ich weiß nicht weiter.
    Aus Formularen einer webapplikation werden die Daten in eine externe Datenbank per Mapping geschrieben, das funktioniert hervorrragend.

    Nachdem insert in die Datenbank startet ein script per PHP (eigenes Plugin) .

    Im Plugin sind unter anderem die Serverdaten, User, passwort usw. hinterlegt und der Zugriff funktioniert auch ohne Probleme. (wird mit einer separaten Abfrage ausgewertet- z.B. select count(*) from t_auswertung where @subid = max(ID))

    Das Ergebnis des Script soll die Formulardaten auf diverse Tabellen verteilen, habe den Script mit PHPmyAdmin und MYSQLFRONT getestet, schnurrt wie ein Bienchen.

    Wenn ich den Script über Wordpress anschiebe kommt folgende Fehlermeldung:

    WordPress-Datenbank-Fehler: [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 'set @subid = (select max(subid) from reparaturanfrage); drop ' at line 1].

    Es ist aber kein Fehler im Script (vermutlich :)), da wie bereits geschrieben, PHPMYADMIN und MYSQLFRONT ohne Warnings und Errors duchlaufen.

    Kann mir jemand helfen?
     
  2. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.634
    Zustimmungen:
    1.778
    Poste mal Deine komplette WordPress Anschiebe-Zeile inkl. PHP und allem. Vermutlich ein falsches/fehlendes Escaping o.ä.
     
  3. wirreparieren

    wirreparieren Member

    Registriert seit:
    9. Januar 2019
    Beiträge:
    12
    Zustimmungen:
    0
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
    #3 wirreparieren, 13. März 2019
    Zuletzt von einem Moderator bearbeitet: 13. März 2019
  4. wirreparieren

    wirreparieren Member

    Registriert seit:
    9. Januar 2019
    Beiträge:
    12
    Zustimmungen:
    0
    siehe unten
     
  5. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.634
    Zustimmungen:
    1.778
    Bzgl. "und allem" fehlt noch die eigentlich relevanteste Stelle, wo das set @subid = (select max(subid) from reparaturanfrage); drop ... aus Deiner Fehlermeldung vorkommt.
     
  6. wirreparieren

    wirreparieren Member

    Registriert seit:
    9. Januar 2019
    Beiträge:
    12
    Zustimmungen:
    0
    aus dem script:

    Auszug:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
    #6 wirreparieren, 13. März 2019
    Zuletzt von einem Moderator bearbeitet: 13. März 2019
  7. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.634
    Zustimmungen:
    1.778
    Lt. Fehlermeldung steht das drop mit in Zeile 1, ohne Originaldaten kann man leider nur schwer helfen.

    Teile die externe SQL-Datei zur Fehlersuche mal in mehrere Dateien auf bzw. befülle Sie schrittweise Zeile für Zeile, bis Du rausfindest, wo der Fehler liegt. Viel Erfolg.
     
  8. wirreparieren

    wirreparieren Member

    Registriert seit:
    9. Januar 2019
    Beiträge:
    12
    Zustimmungen:
    0
    ok, danke erstmal für deine Mühe

    Wenn ich die Fehlermeldung kopiere und im Editor einfüge gibt es nur 1 Zeile und zwar der gesamte script .
    Im Script jedoch (editiert) sieht es aus wie im Code:

    Eventuell muss irgendwo der Zeilenumbruch deklarieret werden?

    Werde jetzt die Datei befehl für befehl splitten......
     
  9. wirreparieren

    wirreparieren Member

    Registriert seit:
    9. Januar 2019
    Beiträge:
    12
    Zustimmungen:
    0
    wenn die Befehle einzeln eingetragen werden
    z.B. select * from x; kein Fehler
    wenn mehrere Befehle im Script stehen.
    select * from X;
    select * from Y;
    select * from Z;

    kommt Fehlermeldung in Zeile 2

    kann es ein Problem mit ; geben, muss das eventuell im Script maskiert werden? oder sollte besser Commit; Verwendung finden?
     
  10. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.634
    Zustimmungen:
    1.778
    Habe dazu ein älteres Support-Forum Posting hier gefunden:
    Eine Lösung wäre das Aufsplitten der Zeilen und einzelne Aufrufen ähnlich wie hier.
     
    wirreparieren gefällt das.
  11. wirreparieren

    wirreparieren Member

    Registriert seit:
    9. Januar 2019
    Beiträge:
    12
    Zustimmungen:
    0
    danke, ist zwar nicht optimal, aber besser als Fehlermeldungen :)
     
  12. mensmaximus

    mensmaximus Well-Known Member

    Registriert seit:
    24. Juli 2014
    Beiträge:
    8.857
    Zustimmungen:
    437
    Auch die Codierung der Datei muss stimmen (UTF8 ohne BOM)
     
    wirreparieren gefällt das.
  13. wirreparieren

    wirreparieren Member

    Registriert seit:
    9. Januar 2019
    Beiträge:
    12
    Zustimmungen:
    0
    Habe jetzt eine prozedure p_test geschrieben mit den abfragen, updates usw.- zusätzlich noch SET SQL_SAFE_UPDATES=0; reingenommen.
    bei call p_test(); kommt das Ergebnis der letzten Abfrage
    select count(*) from v_allg where subid = @subid; eine '1', werde das jetzt in ein PHP script stecken und mal schauen was passiert:
     
  14. wirreparieren

    wirreparieren Member

    Registriert seit:
    9. Januar 2019
    Beiträge:
    12
    Zustimmungen:
    0
    ;);););););)

    PROBLEM gelöst, gehe jetzt Bier trinken :),
    Auszu Code:
    .....
    $result = $DB->query( "CALL `database`.`p_test`();" );
    ?>
    <p>
    Wir haben <strong><?= $result; ?></strong> Zugriff auf die Datenbank.
    </p>
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden