INSERT-Problem unter PHP

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

  • INSERT-Problem unter PHP

    Hallo ! ;-)


    Ich habe hier ein kleines Problem. Ich bin mit PHP und MySQL noch ganz neu. ... Sicher ist das hier nur ein sehr kleines Problem .
    Vielleicht kann mir ja jemand helfen.

    Es handelt sich um ein einfaches in PHP geschriebenes Gästebuch.
    Die Daten werden auf 'sign.php' eingegeben :


    <?php include ("dbconnect.php"); ?>
    <h2>Signieren Sie mein Gästebuch !!!</h2>
    <form method=post action="create_entry.php">
    <b>Name:</b>
    <input type=text size=40 name=name>
    <br>
    <b>Ort:</b>
    <input type=text size=40 name=ort>
    <br>
    <b>E-Mail:</b>
    <input type=text size=40 name=email>
    <br>
    <b>URL:</b>
    <input type=text size=40 name=url>
    <br>
    <b>Kommentar:</b>
    <textarea name=kommentar cols=40 rows=4 wrap=virtual></textarea>
    <br>
    <input type=submit name=submit value="submit">
    <input type=reset name=reset value="Löschen">
    </form>


    Es sollte dann 'create_entry.php' die Daten in MySQL einfügen :


    <?php include("dbconnect.php"); ?>
    <?php

    if ($submit == "submit")
    {
    $query = "insert into gaestebuch "
    ." (name,ort,email,url,kommentar) values "
    ."('$name', '$ort', '$email', '$url', '$kommentar')"
    ;
    //mysql_query($query);
    safe_query($query);
    echo mysql_error();
    ?>
    <h2>Danke!!</h2>
    <h2><a href="view.php">Sehen Sie mein Gästebuch an!!!</a></h2>
    <?php
    }
    else
    {
    echo mysql_error();
    include("sign.php");
    }
    ?>


    Das Problem ist, daß sich einfach keine Daten in die Datenbank einfügen lassen.
    Dagegen funktioniert die Ausgabe mittels z.B.:"select * from ..." anstandslos.Nur funktioniert die "insert"-anweisung nicht, es werden keine Daten in die Datenbank eingefügt.
    Es könnte sich nun um einen Fehler im PHP-Script handeln, ich vermute mittlerweile aber eher, daß es sich hier um das altbekannte Problem der Benutzerrechte handelt ....Benutze ich die Datenbank "test" samt tabellen tut sich nichts und es gibt auch keine Fehlermeldungen.
    Nun habe ich mich unter
    mysql_connect("localhost", "jobst@localhost" , "")- als jobst@localhost (ohne Passwort) versucht einzuloggen. MySQL habe ich die Anweisung "grant all on *.* to jobst@localhost" gegeben. Auf jeden Fall müßte ich nun doch als jobst@localhost auch auf andere Datenbanken als die "test"-Datenbank Zugriff haben ?

    Versuche ich nun das PHP-Script für die Datenbank 'gaestebuch' auzuführen, erhalte ich die Fehlermeldung :
    "Access denied for user: '@localhost' to database 'gaestebuch'"
    (Weshalb steht hier @localhost und nicht jobst@localhost ? ).
    Hat hier jemand eine Ahnung wie oder wo ich etwas verändern muß um von meinem PHP-Script aus in die Datenbank schreiben zu können ?

    Vielen Dank im Voraus für Eure Hilfe,

    Grüße, Jobst ;-)

  • #2
    hallo
    diese Zeilen

    ;
    //mysql_query($query);
    safe_query($query);

    möglicherweise weisst du das nicht:
    wenn vor einer Zeile // steht, dann wird diese ignoriert, d.h. nicht ausgeführt.
    Nimm die beiden // weg, dann sollte es gehen.
    mfg

    Kommentar


    • #3
      Hallo !

      Erst mal danke für die Antwort !

      Sorry, tut mir leid, dieser Kommentar- Doppelslash
      ist nicht in meinem Original-Script ....
      Ich weiß auch wie das jetzt hier reingekommen ist ;-)

      Grüße, Jobst ;-)

      Kommentar


      • #4
        Ich weiß jetzt nicht wie der Status ist, probiers mal mit dem Skriptteil hier. Das
        or print "&gt;&gt;&gt; MySQL-Error: ".mysql_errno()." -&gt; ".mysql_error()."<br>\n";
        kannst bei jedem mySQL Command (insbesondere beim Connect) einbauen, damit werden im Fehlerfall mySQL Fehler angezeigt und das hilft ungemein bei der Fehlersuche.
        PHP-Code:
        <?
        // create_entry.php
        include("dbconnect.php");

        if ($submit == "submit") {
            $query = "insert into gaestebuch (name,ort,email,url,kommentar)
                values ('$name', '$ort', '$email', '$url', '$kommentar')";

            mysql_query($query)
                or print "&gt;&gt;&gt; MySQL-Error: ".mysql_errno()." -&gt; ".mysql_error()."<br>\n";

            print<h2>Danke!!</h2>
                <h2><a href="view.php">Sehen Sie mein Gästebuch an!!!</a></h2>";
        } else {
            include("sign.php");
        }
        ?>

        Kommentar


        • #5
          Hallo 'hand' ! ;-)

          Vielen Dank für Deinen Tip ! ;-)
          Der Quellcode läßt sich ohne Fehlermeldungen einfügen.
          Leider ändert sich trotzdem nichts an der beschriebenen
          Situation ...
          Wenn ich nach einer Texteingabe in die Textfelder auf den Button 'submit' drücke verschwinden die Eingaben. Dieselbe Seite wird wieder angezeigt - aber ohne irgendwelche
          Fehlermeldungen, obwohl der Text nicht in die Datenbank eingefügt wird ...

          Es wurde mir von jemandem empfohlen mal unter 'mysql_connect'
          als user 'jobst' einzugeben. Das wird auch anstandslos angenommen, aber auch wieder ohne Veränderung des eigentlichen Problems.

          Dann meinte jemand, da ich eine Version 4.2.x von PHP habe müßte ich die Variablen anders kennzeichnen, und zwar müßte ich
          zusätzlich
          $_POST['$name'] = $name;
          .... etc.
          einfügen. Auch das wird angenommen, die Problematik selbst bleibt jedoch weiter bestehen ...

          Grüße, Jobst ;-)

          Kommentar


          • #6
            Vielleicht liegts am Benutzername

            geb doch ma root für dein Benutzernamen ein (falls Du zuhause testet und keine Benutzer angelegt hast. Müßte (ich hoffe es ist dieser [manchmal zu uebersehender] Fehler)...

            Viel Glück (...und mal wieder ausspannen!)
            ------------------------------------------
            Ne Tudo que reluz de Ouro

            Kommentar


            • #7
              Dann meinte jemand, da ich eine Version 4.2.x von PHP habe müßte ich die Variablen anders kennzeichnen, und zwar müßte ich
              zusätzlich
              $_POST['$name'] = $name;
              .... etc.
              Versuch's mal andersrum... $name = $_POST["name"]; etc.

              Kommentar


              • #8
                Hallo Leute ! ;-)

                Ich habe wieder ein paar Sachen zur Problemlösung probiert.
                Für den Benutzername habe ich 'root' und auch 'jobst' probiert. Beides wurde angenommen. Aber ohne Erfolg.
                Dann habe ich die Variablen-Kennzeichnung
                $_POST['$name'] = $name; umgedreht zu
                $name = $_POST['$name'];
                Auch das wird angenommen, aber ohne Erfolg.

                Die Fehlermeldung habe ich eingefügt. Es werden aber keine Fehler beim Ausführen angezeigt.
                Dabei kam mir Idee innerhalb der SQL-Anfrage einfach mal imaginäre Sachen reinzuschreiben - wie es dann so mit den Fehlermeldungen aussieht ........
                Und siehe da :
                Ich kann den größten Unsin
                n reinschreiben und es gibt keine Fehlermeldungen !!!!!!!!!!!!!!!!!!!!!
                Eigenartig dabei ist daß dies nur bei 'create_entry.php' so der Fall ist. Beim funktionierenden Script 'view.php! (siehe weiter unten) zum Anzeigen des Tabellen-Inhalts kann ich keine Fehler einbauen. Dort werden sie sofort erkannt .....

                O.k., wie gesagt, den Inhalt einer Tabelle kann ich mir anzeigen lassen. Dieses Script funktioniert dabei ohne Probleme :

                'view.php' :

                <?php include("dbconnect.php"); ?>

                <h2>Gästebuch!!</h2>

                <?php

                $result = mysql_query("select * from gaestebuch") or die ("Fehler");
                if ($result)
                {
                while ($row = mysql_fetch_array($result))
                {
                print "<b>Name:</b>";
                print $row["name"];
                print "<br>\n";
                print "<b>Ort:</b>";
                print $row["ort"];
                print "<br>\n";
                print "<b>E-Mail:</b>";
                print $row["email"];
                print "<br>\n";
                print "<b>URL:</b>";
                print $row["url"];
                print "<br>\n";
                print "<b>Kommentar:</b>";
                print $row["kommentar"];
                print "<br>\n";
                print "<br>\n";
                print "<br>\n";
                }
                mysql_free_result($result);
                }
                ?>
                <h2><a href="sign.php">Signieren Sie mein Gästebuch!!</a></h2>

                Das Problem liegt dann wohl eher irgendwo hier in diesen beiden Scripten über die die Daten per 'INSERT' in die Datenbank eingefügt werden sollen :


                'sign.php' :


                <?php include ("dbconnect.php"); ?>

                <h2>Signieren Sie mein Gästebuch !!!</h2>

                <form method=post action="create_entry.php">

                <b>Name:</b>
                <input type=text size=40 name=name>
                <br>
                <b>Ort:</b>
                <input type=text size=40 name=ort>
                <br>
                <b>E-Mail:</b>
                <input type=text size=40 name=email>
                <br>
                <b>URL:</b>
                <input type=text size=40 name=url>
                <br>
                <b>Kommentar:</b>
                <textarea name=kommentar cols=40 rows=4 wrap=virtual></textarea>
                <br>

                <input type=submit name=submit value="Signieren!">
                <input type=reset name=reset value="Löschen">
                </form>



                und 'create_entry.php' :



                <?php include("dbconnect.php"); ?>
                <?php

                if ($submit == "submit")
                {

                $name = $_POST['name'];
                $ort = $_POST['ort'];
                $email = $_POST['email'];
                $kommentar = $_POST['kommentar'];


                $query = "insert into gaestebuch "
                ." (name,ort,email,url,kommentar) values "
                ."('$name', '$ort', '$email', '$url', '$kommentar')"
                ;
                mysql_query($query)
                or print "&gt;&gt;&gt; MySQL-Error: ".mysql_errno()." -&gt; ".mysql_error()."<br>\n";
                ?>
                <h2>Danke!!</h2>
                <h2><a href="view.php">Sehen Sie mein Gästebuch an!!!</a></h2>
                <?php
                }
                else
                {
                include("sign.php");
                }
                ?>


                So, also daß keine Fehlermeldungen angezeigt werden, gibt ja vielleicht noch einen Hoffnungsschimmer ;-)


                Erst mal bis dann,

                Grüße, Jobst ;-) ;-) ;-)

                Kommentar


                • #9
                  Lösung gefunden !!!!!!!!!!!!!!!

                  Hallo Leute ! ;-)

                  Ich habe die Lösung gefunden !
                  Ich bin sowas von erleichtert, es ist aber auch ganz schön peinlich,
                  wie man sowas übersehen kann ..........................
                  Aber ohne Euch hätte ich keine Chance gehabt .........


                  Ich hatte die Variablen-Kennzeichnung erst vor kurzer Zeit auf $_POST geändert,
                  nachdem ich erfuhr daß dies mit PHP >= 4.2 nötig wäre.
                  Der einzige Fehler den ich jetzt nur noch gemacht habe war für den
                  Button nicht "Signieren!" sondern "submit" anzugeben.
                  Ich kann jetzt mit INSERT Daten in die Datenbank einfügen !
                  Die Änderung sieht jetzt so aus und die ganze Sache läuft wie Zucker ;-) .



                  if ($_POST[submit] == "Signieren!")
                  {

                  $name = $_POST['name'];
                  $ort = $_POST['ort'];
                  $email = $_POST['email'];
                  $url = $_POST['url'];
                  $kommentar = $_POST['kommentar'];


                  Auf jeden Fall VIELEN DANK für die Hilfe und Eure Bemühungen !!!


                  Grüße, Jobst ;-) ;-) ;-)

                  Kommentar


                  • #10
                    ... und wieder einer der sich seine Fehler selber findet, und wieder ein Kunde weniger

                    Kommentar


                    • #11
                      Hallo hand ! ;-)

                      Man gewöhnt sich ja mittlerweile daran bei Fehlern einfach ruhig zu bleiben und evt. sogar ziemlich lange nach dem Problem zu suchen ...
                      Aber hier hätte ich ohne Eure Hilfe echt keine Chance gehabt. Es hat mir auch Alles richtig Spaß gemacht !!!
                      Man hat einfach nicht so das Gefühl alleine vor einem schier unlösbaren Problem zu stehen und damit nicht weiter zu kommen.
                      Auf die Idee Foren zu besuchen bin ich erst vor kurzer Zeit gekommen und ich bin gewaltig beeindruckt von diesen Einrichtungen und auch erleichtert daß es diese gibt. User helfen Usern. Eine tolle Erfindung !
                      Ich habe zwar selbst nicht viel Erfahrung, aber dort wo ich sie habe gebe ich meine Hilfe auch weiter.

                      Da ich mit PHP speziell gerade erst begonnen habe, werden wir uns sicher in nächster Zeit wiedertreffen ;-)

                      Ich freu' mich schon, ;-)

                      Bis dann, Jobst ;-)

                      Kommentar

                      Lädt...
                      X