2016-03-22 4 views
3

Ich habe eine Menge anderer Code versucht und immer noch nicht in meine MySQL Tabelle einfügen. Hier ist, was ich bisher:Kein Wert eingefügt in MySQL-Tabelle mit PHP

Hier ist meine Tabellenstruktur:

here's my table structure

Gelang aber keine Daten eingefügt

succeed but no data in my query

HTML-Formular, das angeblich einfügen werden in MySQL-Tabelle:

<td><form method="post" action="daftar.php"> 
    <label for="textfield2">ID Pekerja:</label><br> 
    <input type="text" name="textfield2" id="textfield2"> 
    <br/> 
    <label for="textfield2">Nama:</label><br> 
    <input type="text" name="textfield" id="textfield"> 
    <br/> 
    <label for="textfield2">Unit:</label><br> 
    <input type="text" name="textfield2" id="textfield2"> 
    <br/> 
    <label for="textfield2">Password:</label><br> 
    <input type="text" name="textfield2" id="textfield2"> 
    <br/> 
    <label for="textfield2">Nombor Telefon:</label><br> 
    <input type="text" name="textfield2" id="textfield2"> 
    <br/> 
    </center> 
</div> 
</form>&nbsp;</td> 
+0

Sehen Sie irgendeine Fehlermeldung? –

+0

Verweis [mysqli-connect] (http://php.net/manual/en/function.mysqli-connect.php) und überprüfen, ob die Verbindung ordnungsgemäß hergestellt ist, auch die Druckfehler –

+0

@DarwinvonCorax keine Fehlermeldung. aber das Ergebnis wurde nicht in der mysql-Tabelle angezeigt. –

Antwort

0

Sie sollten Ihre Syntax erneut überprüfen.

Folgen dies:

INSERT INTO table_name (column1, column2, column3,...) 
VALUES (value1, value2, value3,...) 

Ich würde Ihnen vorschlagen, die obige Syntax zu folgen.

Überprüfen Sie auch die Datentypen Ihrer Datenbanktabellenfelder.

Hoffe, das hilft.

Frieden! xD

+0

Was ist falsch an der bestehenden Syntax? –

0

Überprüfen Sie Ihre HTML-Formular Code

Wert von name-Attribut < input> Tag sollte als POST Variable

dh

<input type="text" 
name="textfield2"
id="textfield2"> 

dann verwendet werden,

$variable = $_POST['textfield2'];
+0

Überprüfen Sie meine Beitrag Variablen? welches ist? –

1

Versuchen Sie, diese

$insert_sql = "INSERT INTO daftar(add column names here)VALUES('$_POST[ID]','$_POST[name]','$_POST[Unit]','$_POST[Password]',$_POST[Telefon])"; 
+0

Ich habe es versucht. aber dieser Fehler ist aufgetreten Parse-Fehler: Syntaxfehler, unerwartet '' (T_ENCAPSED_AND_WHITESPACE), erwartet ']' –

+0

ID Pekerja nur in ID ändern –

+1

Niemals ungefilterte Postwerte in irgendeiner Abfrage verwenden. Ihre Anwendung wird für jede Art von SQL-Injection offen sein. – DKSan

0

Sie NULL Werte zu Ihrer Datenbank hinzufügen, da Ihre forminput Aktien die gleiche name Attribut, während das heißt $_POST['nama'] dosen't existiert. Und wie für das Telefon, überprüfen und stellen Sie sicher, dass die Benutzereingabe ein int ist, ausgenommen Zeichen wie +.

Das Formular sollte wie folgt aussehen:

<td><form method="post" action="daftar.php"> 
    <label for="textfield2">ID Pekerja:</label><br> 
    <input type="text" name="id" id="textfield2"> 
    <br/> 
    <label for="textfield2">Nama:</label><br> 
    <input type="text" name="nama" id="textfield"> 
    <br/> 
    <label for="textfield2">Unit:</label><br> 
    <input type="text" name="Unit" id="textfield2"> 
    <br/> 
    <label for="textfield2">Password:</label><br> 
    <input type="text" name="Password" id="textfield2"> 
    <br/> 
    <label for="textfield2">Nombor Telefon:</label><br> 
    <input type="text" name="Telefon" id="textfield2"> 
    <br/> 
    </center> 
</div> 
</form>&nbsp;</td> 

Warum Sie einen Eingang für ID haben Sie?. Das ist sicherlich nicht notwendig und wird empfohlen, allein gelassen und inkrementiert zu werden.

Best Practices verwenden. Listen Sie alle benötigten Spalten sowie ihre Werte auf. d. h .:

INSERT INTO daftar(nama, unit, pass, tel)VALUES('$_POST[name]','$_POST[Unit]','$_POST[Password]',$_POST[Telefon]) 

Auch Sie Code ist offen für SQL-Injektion. Verwenden Sie vorbereitete Anweisungen, um dies zu vermeiden.Sie können mehr lernen here

3

Ihre Daten werden in Ihre Tabelle eingefügt (Ihre Screenshots zeigen das), wenn auch mit leeren Werten. Das liegt daran, dass Ihre Eingabewerte nicht korrekt sind.

erste richtige HTML-Feldnamen wie PHP-Skript benötigt:

<td> 
    <form method="post" action="daftar.php"> 
    <label for="textfield2">Nama:</label><br> 
    <input type="text" name="nama" id="name"> 
    <br/> 
    <label for="textfield2">Unit:</label><br> 
    <input type="text" name="Unit" id="Unit"> 
    <br/> 
    <label for="textfield2">Password:</label><br> 
    <input type="text" name="Password" id="Password"> 
    <br/> 
    <label for="textfield2">Nombor Telefon:</label><br> 
    <input type="text" name="Telefon" id="Telefon"> 
    <br/> 
    </form> 
</td> 

Dann nach Vorlage Formulardaten vom Benutzer vorgelegten validieren; stellen Sie sicher, dass alle Felder Werte gemäß Ihrer Tabellenstruktur haben alle Felder sind erforderlich und müssen Wert haben; Bestätigen Sie etwas wie folgt aus:

Verwenden folgenden Code:

$nama = @$_POST["nama"]; 
$unit = @$_POST["Unit"]; 
$pass = @$_POST["Password"]; 

/* casting to make sure integer value for this field(Telefon) */ 
$tel = (int) @$_POST["Telefon"]; 

/* validate data submitted by user */ 
$hasError = false; 
$error = ''; 
if(empty($nama)){ 
    $error .= 'nama field required.'; 
    $hasError = true; 
} 
if(empty($unit)){ 
    $error .= 'unit field required.'; 
    $hasError = true; 
} 
if(empty($pass)){ 
    $error .= 'password field required.'; 
    $hasError = true; 
} 
if(empty($tel)){ 
    $error .= 'Telefon field required.'; 
    $hasError = true; 
} 

/* after data validation check that can we insert data or not */ 
if($hasError){ 
    /* notify user that this field is required. */ 
    die($error); 
}else{ 
    /* here we go user inserted data as required */ 

    /* connect to db */ 
    $con = mysqli_connect("localhost", "root", "", "jpn") or die("Cannot connect to server." . mysqli_error($con)); 

    $insert_sql = "INSERT INTO daftar VALUES(NULL, ?, ?, ?, ?)"; 
    if($stmt = mysqli_prepare($con, $insert_sql)){ 
    mysqli_stmt_bind_param($stmt, "sssi", $nama, $unit, $pass, $tel); 
    mysqli_stmt_execute($stmt); 

    if(mysqli_affected_rows($con)){ 
     echo "Succesfully insert new data."; 
    }else{ 
     echo "Error in inserting new data" . mysqli_error($con); 
    } 
    }else{ 
    die("Error in inserting data due to" . mysqli_error($con)); 
    } 
} 

Read more about SQL injection and for prepared statement to prevent this

+0

Dies! Dies ist die Antwort auf die Frage –

+0

@SalmanA Ich habe Casting verwendet, um einen ganzzahligen Wert für 'Telefon field' sicherzustellen; – itzmukeshy7

+0

@ itzmukeshy7 gut, doh. Tut mir leid, das habe ich nicht bemerkt. –

0

Sie falsch in der Post Name .Verwendung Name für Eingangstyp ab. input type = "text" name = "id" id = "textfield2" dann in nachbenutzung name aus inputtyp $ idkerja = @ $ _ POST ["id"];