2016-11-17 16 views
-2

Ich weiß Stackoverflow lehnt wiederholte Fragen ab, aber ertragen Sie mit mir, wie ich viele ähnliche Fragen gescannt habe, ohne bestimmte Auflösungen zu finden, die mir helfen werden. (Meistens erwähnen sie Dinge über Datenbank Einfügungen vermeiden)Undefinierte Variable PHP + MySQL

ich diese Fehlermeldungen auftreten:

here db connection success 
Notice: Undefined variable: firstname in C:\xampp\htdocs\practice_connection_app\submit.php on line 10 

Notice: Undefined variable: lastname in C:\xampp\htdocs\practice_connection_app\submit.php on line 10 

Notice: Undefined variable: conn in C:\xampp\htdocs\practice_connection_app\submit.php on line 11 

Fatal error: Call to a member function exec() on null in C:\xampp\htdocs\practice_connection_app\submit.php on line 11 

Das erste Ergebnis zeigt einfach, dass ich auf meine Datenbank verbunden haben, die ich mit phpMyAdmin gemacht.

Hier ist mein entsprechender Code (meine HTML-Vorlage Seite, die auf einer PHP-Aktion ruft):

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="UTF-8"> 
     <title>student info</title> 
    </head> 
    <body> 
     <br> 
     Enter your first name and last name in the corresponding boxes. 
     <br> 
     <form action="submit.php" method="POST"> 
      First: <input type="text" name="firstname"/> 
     <br> 
      Last: <input type="text" name="lastname"/> 
     <br> 
     <input type="submit"> 
     </form> 


    </body> 
</html> 

die Datenbankverbindung (glaube ich)

<?php 
echo 'here'; 
    $dsn = 'mysql:host=localhost;dbname=practice_students'; 
    $username = 'test_usr'; 
    $password = 'pa55word'; 

    try { 
     $db = new PDO($dsn, $username, $password); 
     echo 'db connection success'; 
    } catch (PDOException $e) { 
     $error_message = $e->getMessage(); 
     include('database_error.php'); 
     exit(); 
    } 

?> 

und meine php einreichen Seite

<?php 
echo 'here '; 
    $dsn = 'mysql:host=localhost;dbname=practice_students'; 


    try { 
     $db = new PDO($dsn); 
     echo 'db connection success'; 
     $sql = "INSERT INTO people (firstname, lastname) 
       VALUES ('$firstname', '$lastname')"; 
     $conn->exec($sql); 
     echo "Now we know your name! Hi," . " " . $firstname . " " . $lastname; 
    } catch (PDOException $e) { 
     $error_message = $e->getMessage(); 
     include('database_error.php'); 
     exit(); 
    } 
?> 

Ich verstehe, dass ich einige 'Aufräumen' müssen, um Datenbankeinfügungen zu vermeiden, aber für jetzt I Ich möchte nur wissen, wie ich sicherstellen kann, dass meine Eingaben in die Datenbank gelangen und zurückgegeben werden können.

Vielen Dank im Voraus!

+2

1. Sie erstellen keine db-Verbindung irgendwo ('$ conn') - wie erwarten Sie, es zu verwenden? 2. Wo bevölkern Sie in Ihrem Code '$ firstname' und' $ lastname' von '$ _POST'? –

+0

Ich bin mir nicht ganz sicher, ob das stimmt, aber wahrscheinlich hätte ich diese Seite zur Frage hinzufügen sollen: getMessage(); include ('datenbank_error.php'); Ausgang(); } ?> –

+0

Bitte nicht Code in Kommentare als Code Dump fast unmöglich zu entschlüsseln. Bearbeiten Sie Ihre ursprüngliche Frage, um neue Informationen hinzuzufügen. –

Antwort

2

nicht sicher, welches Handbuch Sie ahve mit diesem Code am Ende gelesen ....

Sie benötigen eine POST-Variablen (mit $_POST['firstname']) nach ihnen natürlich desinfizierenden ....

EDIT:

der entsandte Variable zuzugreifen, können Sie wie folgt vorgehen:

$firstname = $_POST['firstname']; 

Aber Sie müssen wirklich einige santization los, Sie co uld PHPs filter_var:

$firstname = filter_var($_POST['firstname'], FILTER_SANITIZE_STRING); 

Obwohl, man kann besser als das tun, und sein sehr streng, was Sie erlauben, durch die Filter/sanitizers ... Bitte gehen Sie diesen Teil untersuchen, nachdem Sie Ihren Code erhalten „arbeiten“ :)

+0

, wie sollte es sich integrieren die "POST" -Methode in meinem PHP? Ich glaube, das ist der Punkt, an dem ich verwirrt werde. Thanks –

+0

Ill bearbeiten Sie die Antwort, um Ihnen zu zeigen, wie Sie auf Ihre Post Vars zugreifen. – Stuart

+0

das wäre wirklich hilfreich! Auch Sie erwähnten Desinfektion, ist das, was ich gerade riskieren Datenbankeinfügung? –