Php fonksiyonunu kullanarak "eklemek" Will

3 Cevap php

Ben INSERT INTO kullanarak bir veritabanına _POST ilişkisel dizi eklemek için bir foreach döngüsü kullanmak istiyorum.

Bilmem gereken ne, benim _POST veri benim veritabanı sütunları eşleşmiyor anahtarları varsa, sadece veritabanında bu sütunlar oluşturmak INSERT INTO olacaktır?

değilse, bir hata dönmek ve tüm veritabanını güncellemek değil mi? ya bir hata dönmek ama yine de mümkün olduğunca çok geçerli girdiler ile benim veritabanını güncellemek olacak?

Ben son durumu tercih ederim. Bu benim yapmak için arıyorum ne:

Bir kullanıcı Mulitple alanları ile bir form doldurur -> Ben _POST içinde yanıtları ile bir şeyler yapmak, belki javascript, ya da bir e-posta göndermek, bazı hesaplamalar -> Ben kısmını depolamak, ama hepsi değil, ileride benim veritabanında alanları, dizi döngü ve maçlar her şeyi saklamak bunu yapmak için basit bir yol gibi görünüyor.

İdeal olarak, ben işte ben INSERT INTO nasıl çalıştığını daha ayrıntılı ve ince bir anlayış kazanmak için arıyorum farklı durumlarda bu kodu yeniden muktedir istiyorum.

3 Cevap

Yoktur sütunlar eklemek için çalışırken bir hata neden olur ve hiçbir satır eklenecektir.

Neden sadece DB sütunları listeler PHP dosyası bir ilişkisel dizi tanımlamak ve daha sonra her alan INSERT dahil etmeden önce o dizinin bir üyesi olup olmadığını görmek için kontrol etmedi?

$allowed_columns = array(
   "name" => 1,
   "phone" => 1,
   "address" => 1
);

foreach($_POST as $key => $val) {
    if(!isset($allowed_columns[$key])) continue;
    //otherwise, add this field after properly
    //validating/escaping the contents of $val
}

INSERT INTO zaten mevcut alanlarına değerler eklemek, onlar var yoksa, bir hata oluşur olacaktır. Eğer sorgu başına bir kayıt takarsanız bir satır eklenir olamaz eğer, bir sonraki satır olacak.

Bir uyarı olsa: SQL Enjeksiyon içine bakmak gerekir. Kullanıcı tarafından gönderilen veri alma ve doğrulama ya da kaçan değil çok tehlikelidir. Kötü niyetli bir kullanıcı kolayca veritabanındaki tüm kayıtları silmek, ya da eğer dikkatli değilseniz hassas kullanıcı verileri almak olabilir.

Yığın taşması ve genel olarak internette SQL Enjeksiyon iyi birçok soru vardır.

Bu hata ve ekleme başarısız olur.