Ankündigung

Einklappen
Keine Ankündigung bisher.

php-variable in einer sql-abfrage

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • php-variable in einer sql-abfrage

    Moin moin,

    ich habe das ganze netzt abgesucht und ncihts gefunden dabei will ich doch nur in einer sql-abfrage eine variable einbinden. Die Variable komm vorher aus einer session. Der Quellcode lautet wie folgt:

    $test = .$_SESSION['ort'];
    $kunden = "kunden";
    $sql = "SELECT * FROM $kunden WHERE Ort = '$test'";
    $result = mysql_query($sql);

    war nen Versuch von mir klappt aber nicht. Wäre für dieRichtigstellung des Codes dankbar.

    John


  • #2
    An den paar Zeilen liegt es nicht.

    Gruß
    phpfan

    Kommentar


    • #3
      komisch denn $SESSION['ort'] enthält den vorher eingegebenen ort, sehe ich ja wenn ich die variable ausgebe.

      Nur wenn ich sie als Vergleich zu den Orten in der Datenbank einsetzte gibt es einen fehler und meine seite bleibt leer.

      Kommentar


      • #4
        Hier mal der ganze Quellcode

        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
        <html>
        <head>
        <title>New Document</title>
        <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
        </head>
        <body>
        <?php
        session_start();
        $_SESSION['ort'] = $_POST['ort'];
        ?>
        <?
        @mysql_connect("localhost", "root", "katjaz");
        // Auswahl der Datenbank
        @$x=mysql_select_db("testdatenbank");
        if (empty($x)) {
        echo "Fehler beim Verbinden mit dem Datenbankserver.
        ";
        exit;
        }


        // Absetzen eines SQL-Befehls
        $test = .$_SESSION['ort'];
        $kunden = "kunden";
        $KdNr = "KdNr";
        $sql = "SELECT * FROM $kunden WHERE Ort = '$test'";
        $result = mysql_query($sql);

        echo "<table width=75% border=1 cellpadding=3>";
        if ($result) {
        // Felder eines Datensatz in eine assoziatives Array füllen
        // Tabellenfoermige Ausgabe
        while ($ar=mysql_fetch_array($result,MYSQL_ASSOC)) {
        echo "<tr><td align=center>",$ar["KdNr"],
        "</td><td align=center>",$ar["Name"],
        "</td><td>",$ar["Vorname"],
        "</td><td>",$ar["Ort"],
        "</td><td>",$ar["PLZ"],
        "</td></tr>\n";
        }
        }
        else
        echo "fehler
        ";
        ?>

        Kommentar


        • #5
          Zitat von John_B
          Nur wenn ich sie als Vergleich zu den Orten in der Datenbank einsetzte gibt es einen fehler und meine seite bleibt leer.
          Ahja, und der Fehler ist so geheim, dass du ihn am Anfang überhaupt nicht erwähnst und jetzt nur andeutest. Kopfschüttel

          Gruß
          phpfan

          Kommentar


          • #6
            Hier mal der ganze Quellcode

            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
            <html>
            <head>
            <title>New Document</title>
            <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
            </head>
            <body>
            <?php
            session_start();
            $_SESSION['ort'] = $_POST['ort'];
            ?>
            <?
            @mysql_connect("localhost", "root", "katjaz");
            // Auswahl der Datenbank
            @$x=mysql_select_db("testdatenbank");
            if (empty($x)) {
            echo "Fehler beim Verbinden mit dem Datenbankserver.
            ";
            exit;
            }


            // Absetzen eines SQL-Befehls
            $test = .$_SESSION['ort'];
            $kunden = "kunden";
            $KdNr = "KdNr";
            $sql = "SELECT * FROM $kunden WHERE Ort = '$test'";
            $result = mysql_query($sql);

            echo "<table width=75% border=1 cellpadding=3>";
            if ($result) {
            // Felder eines Datensatz in eine assoziatives Array füllen
            // Tabellenfoermige Ausgabe
            while ($ar=mysql_fetch_array($result,MYSQL_ASSOC)) {
            echo "<tr><td align=center>",$ar["KdNr"],
            "</td><td align=center>",$ar["Name"],
            "</td><td>",$ar["Vorname"],
            "</td><td>",$ar["Ort"],
            "</td><td>",$ar["PLZ"],
            "</td></tr>\n";
            }
            }
            else
            echo "fehler
            ";
            ?>

            Kommentar


            • #7
              Re: php-variable in einer sql-abfrage

              Zitat von John_B
              $test = .$_SESSION['ort'];
              $test .= $_SESSION['ort']; //wird angehängt
              $test = $_SESSION['ort']; //wird gesetzt

              Welches meinstest du?

              EDIT:
              Und nochwas, mysql_injection, schonmal gehört?
              Diese Erweiterung ist EXPERIMENTELL.
              [...]
              Seien Sie gewarnt und verwenden Sie diese Erweiterung auf eigenes Risiko..

              Kommentar


              • #8
                Wie lautet die Fehlermeldung und was sagt mysql_error?!??!?!?!?

                Und rate mal, wofür die Button über der Eingabefläche da sind.

                Gruß
                phpfan

                Kommentar


                • #9
                  Es gibt ja keine Fehlermeldung er geht auf die nächste Seite.

                  Ich arbeite mit der gesetzten Variable.

                  sorry wegen dem Code.

                  Kommentar


                  • #10
                    Richtig debuggen
                    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
                    2. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
                    3. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
                    4. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
                    5. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
                    6. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
                    7. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

                    Die Ausgaben per echo kann man sich ersparen, in dem man einen Debugger benutzt, was eigentlich selbstverständlich sein sollte.

                    Gruß
                    phpfan

                    Kommentar


                    • #11
                      Ja, dann nehm den Punk da raus!

                      und dann guck dir nebenbei mal mysql_real_escape_string() an.
                      Diese Erweiterung ist EXPERIMENTELL.
                      [...]
                      Seien Sie gewarnt und verwenden Sie diese Erweiterung auf eigenes Risiko..

                      Kommentar


                      • #12
                        Gut probiere ich doch glatt mal aus.

                        Na vielleicht brauche ich dann Schritt 6 nicht mehr.

                        Kommentar


                        • #13
                          Und an den Anfang des Scriptes mal diese Zeile einbauen:
                          PHP-Code:
                          error_reporting(E_ALL); 
                          und dann erst mal alle Notice-Meldungen beheben.

                          Gruß
                          phpfan

                          Kommentar


                          • #14
                            Evtl muss auch ini_set('display_errors', true); eingefügt werden (vor oder nach error_reporting,egal), damit Du die Fehler angezeigt bekommst ohne Zugriff auf die Protokolldateien.

                            Kommentar

                            Lädt...
                            X