2016-05-03 4 views
1

Ich habe eine Formularseite namens "employee.php" für die Aufnahme von Benutzerdaten erstellt. Ich habe auch eine andere Datei namens SQLConnectionProcess.php, die den Code zum Verknüpfen von Formularen in employee.php mit SQL-Tabelle enthält. Der Name der Datenbank lautet "Mitarbeiterinformationen" und der Name der Tabelle lautet "Mitarbeiterinformationen". Ich benutze phpmyadmin und XAMPP für lokale Server-Tests.HTML-Formulare zu SQL-Tabelle

employee.php Code:

<html> 
<body> 

<form name="EmployeeDatabase" action="SQLConnectionProcess.php" method="post"> 

<link rel="stylesheet" href="css.css"> 

<h1>EMPLOYEE DATABASE</h1> 

Employe Card NO: <input type="text" name="cardNO" ><br><br> 
Employee NO: <input type="text" name="employeeNO" ><br><br> 
Employee Name: <input type="text" name="employeename"><br><br> 
Nationality: <input type="text" name="nationality"><br><br> 
Profession: <input type="text" name="profession"><br><br> 
DOB: <input type="text" name="DOB"><br><br> 
DOJ: <input type="text" name="DOJ"><br><br> 
DOA(VisitVisa): <input type="text" name="DOA"><br><br> 
Company Code: <input type="text" name="companycode"><br><br> 
Sponsor Code: <input type="text" name="sponsorcode"><br><br> 
Visa Type: <input type="text" name="visatype"><br><br> 
Status: <input type="text" name="status"><br><br> 

<input type="submit" name="formSubmit" value="Submit"> 

</form> 

</body> 
</html> 

SQLConnectionProcess.php Code:

<?php 
if(isset($_POST['formSubmit'])){ 
    $cardNO= isset($_POST['cardNO']) ? $_POST['cardNO'] : 0; 
    $employeeNO= isset($_POST['employeeNO']) ? $_POST['employeeNO'] : 0; 
    $employeename= isset($_POST['employeename']) ? $_POST['employeename'] : ""; 
    $nationality= isset($_POST['nationality']) ? $_POST['nationality'] : ""; 
    $profession= isset($_POST['profession']) ? $_POST['profession'] : ""; 
    $DOB= isset($_POST['DOB']) ? $_POST['DOB'] : ""; 
    $DOJ= isset($_POST['DOJ']) ? $_POST['DOJ'] : ""; 
    $DOA= isset($_POST['DOA']) ? $_POST['DOA'] : ""; 
    $companycode = isset($_POST['companycode']) ? $_POST['companycode'] : 0; 
    $sponsorcode= isset($_POST['sponsorcode']) ? $_POST['sponsorcode'] : 0; 
    $visatype= isset($_POST['visatype']) ? $_POST['visatype'] : ""; 
    $status= isset($_POST['status']) ? $_POST['status'] : ""; 
    $con = mysqli_connect('localhost','root','','employee information'); 
    $sql = sprintf("INSERT INTO table_employee info(Employee Card NO,Employee NO,Employee Name,Nationality,Profession,DOB,DOJ,DOA(VisitVisa),Company Code,Sponsor Code,Visa Type,Status) VALUES ('','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')",$cardNO,$employeeNO,$employeename,$nationality,$profession,$DOB,$DOJ,$DOA,$companycode,$sponsorcode,$visatype,$status); 
    mysqli_query($con,$sql); 
} 
?> 

Aber wenn ich meine Formen von employee.php bekomme ich folgende Fehler:

Hinweis: Undefinierte Variable: emplo yeeNO in C: \ xampp \ htdocs \ test1 \ SQLConnectionProcess.php in Zeile 16

Notice: Undefined variable: Sponsor Code in C: \ xampp \ htdocs \ test1 \ SQLConnectionProcess.php on line 16

Ich bin nicht in der Lage, die Quelle der Fehler zu finden. Bitte helfen Sie mir

+0

Haben Sie Daten für emplo yeeNO & sponsorcode eingeben? – HoangND

+0

yeah, versuchen Sie, Ihr Formular einzureichen, indem Sie alle Daten eingeben, wenn Sie es erhalten, machen Sie eine Validierung an Ihrem Client-Ende. Zweitens, versuchen Sie, das Problem zu debuggen und verwenden Sie 'var_dump ($ _ POST); exit;', um zu sehen, was in der Post-Anfrage kommt. – hmd

+0

Ich habe versucht, Daten in allen Formularen einzugeben. Die gleichen Fehler bestehen weiterhin ... – Gowtham

Antwort

3

Verwenden Sie isset(), um von oben genannten Fehler zu verhindern.

<?php 
if(isset($_POST['formSubmit'])){ 
    $cardNO= isset($_POST['cardNO']) ? $_POST['cardNO'] : 0; 
    $employeeNO= isset($_POST['employeeNO']) ? $_POST['employeeNO'] : 0; 
    $employeename= isset($_POST['employeename']) ? $_POST['employeename'] : ""; 
    $nationality= isset($_POST['nationality']) ? $_POST['nationality'] : ""; 
    $profession= isset($_POST['profession']) ? $_POST['profession'] : ""; 
    $DOB= isset($_POST['DOB']) ? $_POST['DOB'] : ""; 
    $DOJ= isset($_POST['DOJ']) ? $_POST['DOJ'] : ""; 
    $DOA= isset($_POST['DOA']) ? $_POST['DOA'] : ""; 
    $companycode = isset($_POST['companycode']) ? $_POST['companycode'] : 0; 
    $sponsorcode= isset($_POST['sponsorcode']) ? $_POST['sponsorcode'] : 0; 
    $visatype= isset($_POST['visatype']) ? $_POST['visatype'] : ""; 
    $status= isset($_POST['status']) ? $_POST['status'] : ""; 
    $con = mysqli_connect('localhost','root','','employee information'); 
    $sql = sprintf("INSERT INTO employee_info info(EmployeeCardNO,EmployeeNO,EmployeeName,Nationality,Profession,DOB,DOJ,DOA(VisitVisa),CompanyCode,SponsorCode,VisaType,Status) VALUES ('','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')",$cardNO,$employeeNO,$employeename,$nationality,$profession,$DOB,$DOJ,$DOA,$companycode,$sponsorcode,$visatype,$status); 
    mysqli_query($con,$sql); 
} 
?> 
+0

Danke. Ich habe den obigen Code verwendet. Keine Fehler mehr. Nur leere Seite. bedeutet es, dass es funktioniert? – Gowtham

+0

Ich lerne immer noch, phpmyadmin zu verwenden, also weiß ich noch nicht, ob die Datenbank Eingaben von Formularen – Gowtham

+0

empfängt, mein Tabellenname ist "Mitarbeiterinfo" und Datenbankname ist "Mitarbeiterinformation". sollte ich mich über "table_employee info" Gedanken machen, die wir in unserem Code verwendet haben. Was macht Tabelle_? Ist es Syntax oder Name der Tabelle in meinem Code? – Gowtham

0

Verlassen Sie sich nicht auf Daten, die vom Client erwartet werden. Stellen Sie zunächst sicher, dass alle Daten aus dem Array $_POST gesetzt sind. Wenn ein Wert nicht wichtig ist, können Sie einen Standardwert auswählen. Sie können es mit einer kurzen Funktion

function get(&$var, $default = null) 
{ 
    return isset($var) ? $var : $default; 
} 

$cardNO = get($_POST['cardNO'], 0); 

vereinfachen Wenn eine erforderliche Eingabe nicht vorhanden ist, müssen Sie stattdessen den Benutzer benachrichtigen.

Dann mischen Sie niemals Zeichenfolgen aus unsicheren Quellen (z. B. dem Client) in SQL-Anweisungen. Verwenden Sie stattdessen vorbereitete Anweisungen.

$query_string = 'INSERT INTO `tablename` (`fieldname1`, `fieldname2`) VALUES (?,?);'; 
if($statement = $mysqli_connection->prepare($query_string)) 
{ $statement->bind_param('s', $variable1); 
    $statement->bind_param('s', $variable2); 
    $statement->execute(); 
    // fetch the result... 
} 

Für weitere Informationen siehe auch PHP manual.

Emulierte vorbereitete Anweisungen sollten durch Optionen auf connect deaktiviert werden, da ansonsten unter Umständen noch Enkodierungsattacken möglich sind.

Wenn Sie eine Datenbank zugreifen müssen, die Leerzeichen in Identifikatoren enthält, können Sie diese in Backticks umgeben:

SELECT * FROM `table name with whitespaces`;