Undefined variable: sql ; mysqli::query(): Empty query; Undefined variable: sql

  • Moin,


    das INSERT funktioniert jetzt. Aber jetzt habe ich das Problem, dass angeblich meine $sql nicht definiert sei...

    Hier die Fehlermeldungen:


    Notice: Undefined variable: sql in C:\xampp\htdocs\spiel\endscreen.php on line 43
    Warning: mysqli::query(): Empty query in C:\xampp\htdocs\spiel\endscreen.php on line 43
    Notice: Undefined variable: sql in C:\xampp\htdocs\spiel\endscreen.php on line 46



    CODE:


    <html>


    <head>

    </head>


    <body>





    <form action="" method="post" name="formular1">

    <p><b>Ihren Namen hier eingeben</p></b>

    <input type="text" name="user" value="" size="50" maxlength="150" required/>

    <input type="submit" name="Button" value="Absenden">



    <?php

    # Error wird gemeldet

    error_reporting(-1);


    $servername = "localhost";

    $username = "root";

    $password = "";

    $dbname = "numberguess";


    # Connection wird erstellt

    $conn = new mysqli($servername, $username, $password, $dbname);

    # Connection prüfen

    if ($conn->connect_error)

    {

    die("Verbindung fehlgeschlagen: " . $conn->connect_error);

    }





    if (isset($_POST['user']))

    {

    $user = $_POST['user'];

    $sql = "INSERT INTO stats (user) VALUES ('$user')";

    }


    if ($conn->query($sql) === TRUE) {

    echo "Neue Verbindung hergestellt";

    } else {

    echo "Fehler: " . $sql . "<br>" . $conn->error;

    }


    $conn->close();


    ?>

    </body>

  • Fehler behoben:

    Habe einfach unten die den kompletten if block oben mit bei isset rein getan.


    also so hier:


    <html>


    <head>

    </head>


    <body>





    <form action="" method="post" name="formular1">

    <p><b>Ihren Namen hier eingeben</p></b>

    <input type="text" name="user" value="" size="50" maxlength="150" required/>

    <input type="submit" name="Button" value="Absenden">



    <?php

    # Error wird gemeldet

    error_reporting(-1);


    $servername = "localhost";

    $username = "root";

    $password = "";

    $dbname = "numberguess";


    # Connection wird erstellt

    $conn = new mysqli($servername, $username, $password, $dbname);

    # Connection prüfen

    if ($conn->connect_error)

    {

    die("Verbindung fehlgeschlagen: " . $conn->connect_error);

    }





    if (isset($_POST['user']))

    {

    $user = $_POST['user'];

    $sql = "INSERT INTO stats (user) VALUES ('$user')";


    if ($conn->query($sql) === TRUE) {

    echo "Neue Verbindung hergestellt";

    } else {

    echo "Fehler: " . $sql . "<br>" . $conn->error;

    }

    }



    $conn->close();








    ?>

    </body>

  • Das Grundproblem ist immer noch der erste Aufruf der Seite.

    Du hast keine Ahnung, was isset() überhaupt macht, oder? Du musst Dich mit den Befehlen/Funktionen, die Du verwendest vertraut machen, sprich: Doku lesen!


    Beim ersten Aufruf der Seite, existieren keine POST-Daten, weil es eine reine GET-Anforderung ist.

    Da $sql im Wahrheitsblock von isset($_POST['user']) definiert wird, existiert es außerhalb des Scope nunmal nicht!