Plugin startet Datei *.SQL auf externer DB + Fehlermeldung

  • 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?

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Einmal editiert, zuletzt von maxe (13. März 2019 um 15:30)

  • Bzgl. "und allem" fehlt noch die eigentlich relevanteste Stelle, wo das [FONT=Courier New]set @subid = (select max(subid) from reparaturanfrage); drop[/FONT] ... aus Deiner Fehlermeldung vorkommt.

  • aus dem script:

    Auszug:

    Einmal editiert, zuletzt von maxe (13. März 2019 um 15:31)

  • Lt. Fehlermeldung steht das [FONT=Courier New]drop[/FONT] 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.

  • 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......

  • Lt. Fehlermeldung steht das [FONT=Courier New]drop[/FONT] 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.

    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?

  • Habe dazu ein älteres Support-Forum Posting hier gefunden:

    Zitat

    While PhpMyAdmin appears to be able to run multiple statements at once, in reality it’s because phpMyAdmin parses the statements into individual queries, then runs them.

    Eine Lösung wäre das Aufsplitten der Zeilen und einzelne Aufrufen ähnlich wie hier.

  • Auch die Codierung der Datei muss stimmen (UTF8 ohne BOM)

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • 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:

  • ;);););););)

    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>

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!