Beiträge von Arne Drews

    Wo schau ich denn nach? im phpMyAdmin oder in der .php Datei ?

    In der entsprechenden .php Datei.

    Ich frag, weil ich dachte, ich dürfe hier Fragen stellen und weil ich wenig Ahnung habe und das Problem lösen muss.

    Klar, das ist nicht das Problem. Ich habe Dich aber schon mehrfach darauf hingewiesen, dass es nichts mit dem MySQL-Server oder dessen Version zu tun hat. Trotzdem versucht Du dort aber immer wieder die Begründung für das Problem zu suchen.

    Deshalb nochmal: Vergiss für Dein Problem, dass Du MySQL einsetzt geschweige denn kennst. Die Ursache liegt nach meiner Einschätzung zu 99% irgendwo in den PHP Scripten.

    Was verstehst Du daran nicht?!

    Vergiss mal MySQL und nimm einfach mal an, dass die Query ähnlich wie so aufgebaut wird:

    PHP
    $iTopId = foobar( $argument );
    $sQuery = "select conditions from top_conditions where top_id=" . $iTopId . " and hotel_id=286";

    Was passiert da?

    Eine Funktion - hier beispielhaft foobar benannt - führt Berechnungen aus und liefert eine ID zurück, die in $iTopId abgelegt wird.

    Und was hat das mit dem Problem zu tun?

    Nimm nun einfach mal an, dass foobar() oder eine darin ausgeführte Funktion/Methode zur Berechnung der ID auf dem neuen System nicht mehr unterstützt wird oder ein anderes Verhalten an den Tag legt, warum auch immer. Dann kann es durchaus vorkommen, dass null oder false als Rückgabe kommen. Dann wäre das bspw. schon eine Erklärung dafür, dass in $sQuery nichts an Stelle der $iTopId angezeigt wird und somit eine fehlerhafte Query entsteht.

    Fazit

    Auch wenn ich das verwendete Script in Frage stelle, allein dass an der Stelle überhaupt keine Fehlerprüfung zu sein scheint, ist das der Ansatz, den Du verfolgen musst.

    Das ganze hier ist natürlich nur theoretisch und grob spekulativ, weil ich nicht weiß, wie und wo die Query tatsächlich aufgebaut wird. Aber das schaust Du ja auch nicht nach, weil Dir die Zeit dazu fehlt, neben dem ständigen in Frage stellen unserer Antworten hier.

    Auf jeden Fall sehe ich den Fehler ziemlich eindeutig beim Erstellen des Query-Strings. Was genau kann ich ohne entsprechenden Code nicht sagen bzw. eingrenzen.

    Das Programm läuft aber auf dem alten Server einwandfrei

    Na und? Das Problem wird an der Stelle liegen, wo die Query zusammengebastelt wird. Die entsprechende Variable, die den Wert für top_id enthalten soll, kann ja bspw. auf einer Funktion/Methode basieren, die auf der neuen Umgebung fehlschlägt.

    Das hat dann am Ende nichts mit MySQL zu tun, weil die Query bis dahin noch gar nicht zum Einsatz kam.

    Ok, das Problem scheint an der MYSQL Version zu liegen. Auf dem alten Server läuft Debian 6 MYsql 5.1 oder 5.0 und auf dem neuen Debian 9 Mysql 5.5

    Dann kannst Du genau so gut annehmen, dass es an der Debian Version liegt. Das ist Nonsens, Du musst dort ansetzen, wo die Query gebastelt wird.

    Mit der MySQL-Version hat das schon mal genau NULL zu tun, denn select conditions from top_conditions where top_id = and hotel_id =286 wird jede Version von MySQL anmeckern, weil es einfach falsch ist!

    Ui... stark veraltet, das hätte ich bei einem Umzug ja gleich mit bedacht. Probleme gibt es ja so oder so, wie man sieht.

    Um You have an error in your SQL syntax; anzusprechen, was fällt Dir denn hier auf?

    select conditions from top_conditions where top_id = and hotel_id =286, wie in der Meldung schon steht, liegt der Fehler near 'and hotel_id =286'. Als Tipp, near heißt in dem Fall links davon.

    Als Ansatz:

    JavaScript
    var xhr = new XMLHttpRequest();
    xhr.onload = function(e) {
        // do something with this.responseText or this.responseXML
    };
    
    xhr.open( 'POST', 'https://www.example.com', true );
    xhr.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' );
    xhr.setRequestHeader('charset', 'UTF-8' );
    xhr.send( 'foo=bar&some=more' );

    Mit Ajax das Formular zu laden geht nicht, weil dann der Submit Button nicht mehr die Seite neuladet. Das hatte ich schonmal bereits ausgetestet.

    Warum lädt der Submit-Button dann nicht neu? Da würde ich eher ansetzen.

    Zeig doch sonst mal Dein Script, vielleicht kann man ja auf die Schnelle was erkennen...

    Naja, unterm Strich ohne es bewertend zu meinen ist das ja eh eine Notlösung, weil Du das Script nicht ändern willst, was aber weiterhin die beste Lösung ist!

    Deine Lösung funktioniert wie gesagt nur, weil Du die alert()-Methode überschreibst und damit nicht mehr nutzbar machst. Standard-Methoden zu überschreiben war noch nie eine sinnvolle Lösung.

    Wo hast Du das denn gefunden? So ganz richtig ist das nicht dargestellt. window.alert ist kein Event, sondern ein Funktion/Methode. Du überschreibst diese einfach nur mit einer neuen. In der neuen Methode übernimmst Du dann die Nachricht in die Variable kk, die Du dann in den Container #aa schreibst.

    Alles in allem mag das funktionieren, ist aus meiner Sicht aber alles andere als sauber!

    Wie Du schon befürchtet hast: umschreiben!

    Dürfte auch nicht ganz so schwierig sein, ganz egal, wie viele Zeilen das Script hat.

    Grundsätzlich wird es sicher immer die direkte Anweisung alert( ... ); sein. Dann müsste ein ersetzen mit regulären Ausdrücken helfen:

    Das Pattern alert\(([^)]+)\); ersetzen mit console.log( \1 ); oder console.log( $1 ); je nachdem, in welcher Umgebung Du die Ersetzungen durchführst. Natürlich ginge auch, das in einen Container zu schreiben, das wäre dann bspw. ein ersetzen mitdocument.getElementById( 'dein-container' ).innerText = \1;

    Desweiteren wird der Token dann im Quellcode sichtbar und dann ergibt dies auch keinen Sinn.

    Der Token wird immer sichtbar, zumindest aber immer auffindbar sein, bei einer JS Lösung, das ist das sinnlose daran.

    Selbst wenn Du es in Deine reine JS-Datei bekommst, kann ich diese über meine Developer-Tools im Browser einsehen und alles lesen.

    Wie schon eingangs erwähnt, gehört eine Token-Prüfung auch nicht auf Client Seite!

    Das muss auch nicht in irgendeine reine JS-Datei.

    PHP
    <?php
    $tooManySecrets = 'var token="youcantseeme"';
    ?>
    ...
    <script type="text/javascript"><?php echo $tooManySecrets; ?></script>
    <script type="text/javascript" src="deine-reine-js-datei.js"></script>

    In Deiner JS hast Du Zugriff auf die Variable token.