PHP

2016-03-22 20 views
3

'u kullanarak MySQL tablosuna hiçbir değer eklenmemiş Birçok farklı kod denedim ve yine de MySQL tablosuma ekleyemiyorum.PHP

İşte benim tablo yapısı var: İşte ben bugüne kadar ne var

here's my table structure

Başarılı ancak hiçbir veri

takılı

succeed but no data in my query

ekleyin gerekiyordu

HTML formu MySQL tablosu:

<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

Herhangi bir hata iletisi görüyor musunuz? –

+0

[mysqli-connect] konusuna bakın (http://php.net/manual/en/function.mysqli-connect.php) ve bağlantının uygun şekilde kurulup kurulmadığını kontrol edin, ayrıca baskı hataları da –

+0

@DarwinvonCorax hata mesajı yok. ama sonuç mysql tablosunda göstermedi. –

cevap

0

Sözdizimini tekrar kontrol etmelisiniz.

bu takip edin:

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

Yukarıdaki sözdizimi takip etmenizi öneririm.

Ayrıca, veritabanı tablosu alanlarınızın veri türlerini de kontrol edin.

Bu yardımcı olur umarım.

Peace! xD

+0

Mevcut sözdiziminde sorun nedir? –

0

HTML formu kod < girdi name özelliğinin

değerini kontrol> etiketi sonra POST değişkeni

yani

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

olarak kullanılmalıdır
+0

Posta değişkenlerimi kontrol et hangisi? –

1

210 yani $_POST['nama'] dosen't bile var iken bu

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

denedim. ancak bu hata Ayrıştırma hatası çıktı: sözdizimi hatası, beklenmedik '' (T_ENCAPSED_AND_WHITESPACE), bekliyorum ']' –

+0

Kimlik Pekerja yalnızca kimliği değiştir –

+1

Hiçbir zaman herhangi bir sorguda filtre uygulanmamış posta değerlerini kullanmayın. Uygulamanız herhangi bir SQL enjeksiyonu için geniş açık olacaktır. – DKSan

0

Sen forminput payı beri aynı name niteliğini veritabanınıza NULL değerleri ekliyoruz deneyin. Ve telefonla ilgili olarak, kullanıcı girdisinin + gibi karakterler hariç int olduğundan emin olun ve doğrulayın.

Formunuz şöyle görünmelidir:

<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> 

Eğer ID için bir giriş var mı Neden?. Bu kesinlikle gerekli değildir ve yalnız bırakılması ve kendi başına artırılması tavsiye edilir.

En iyi uygulamaları kullanın. Gerekli tüm sütunları ve değerlerini listeleyin. Ayrıca, kod SQL enjeksiyona açıktır. Ayrıca, kod size SQL enjeksiyonuna açıktır. Bunu önlemek için hazırlanmış ifadeler kullanın.Daha fazla bilgi edinmek için here

3

Verileriniz tablonuza ekleniyor (ekranınız bunu gösteriyor), boş değerlerde de olsa. Bunun nedeni, giriş değerlerinin doğru olmamasıdır.

PHP komut dosyası gereği ilk doğru html alan adları:

<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> 

form gönderme kullanıcı tarafından gönderilen verileri doğrulamak Sonra sonra; tüm alanların tablo yapınıza göre değerleri olduğundan emin olun, tüm alanlar gereklidir ve değeri olmalıdır; Böyle bir şey doğrulama:

kullanın aşağıdaki kodu:

$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

Bu! Bu, –

+0

@SalmanA sorusuna verilen yanıtın 'Telefon alanı' için tamsayı değerinden emin olmak için döküm kullandığını; – itzmukeshy7

+0

@ itzmukeshy7 iyi, doh. Üzgünüm bunu fark etmedim. –

0

Sen girdi tipi ex sonrası adı yararlanabileceğinizi adına yanlış. girdi türü = "text" name = "id" id = "textfield2" sonra post type adından giriş türü $ idkerja = @ $ _ POST ["id"];