php insert sql fonksiyonu

4 Cevap php

Ben veritabanına veri eklemek için kullanacağınız php bir ekleme fonksiyonu oluşturmak istiyorum.

Tabii ki tüm uçlar bazı kullanımı bir tablo Başkaları ne bu yapmak için en iyi yoldur, diğer, tablo vb farklı sütun numaraları kullanmak, aynı değil mi?

Ben Admin onaylanmış alacak olan üyeleri onaylamak istediğiniz ve hangilerinin olmaz, üye kaydı için web sayfasında, şimdi herkes kayıt sağlamak için istemiyorum şu anda değilim, bu yüzden ben 0 bir gizli alanını ve sonrası Onay o bir hale gelir.

CASE: Birisi web sitesine gelen ve kundakçı ile 1 giriş alanı değerini değiştirir ve otomatik onaylı alır kayıt gönderdiğinde, ben sadece ihtimalini düşünüyorum bu deneyin vermedi. Ben ekleme fonksiyonu içerisine member_active koymak Şimdi eğer o zaman kaç / az veritabanı sütun sırası ile diğer uç sorguları için çalışmaz.

Bunu yapmanın yolu nedir, küresel genel / insert fonksiyonu iyi bir fikir hiç, ben hemen hemen tüm bu program nasıl biliyorum, ama son zamanlarda veri / verimlilik ve yapabilir böyle şeyler konusunda daha dikkatli oldum senin web sitesi daha iyi / kötü bu yüzden iyi bir başlangıç ​​istiyorum. Teşekkür ederim

4 Cevap

CodeIgniter also does this, ama burada öyle:

function Insert($table, $data, $ignore = false)
{
    $sql = array();

    if (is_array($sql) === true)
    {
    	$sql['query'] = 'INSERT ';

    	if ($ignore === true)
    	{
    		$sql['query'] .= 'IGNORE ';
    	}

    	foreach ($data as $key => $value)
    	{
    		$data[$key] = Tick($key) . ' = ' . Quote($value);
    	}

    	$sql['query'] .= 'INTO ' . Tick($table) . ' SET ' . implode(', ', $data);
    }

    return implode('', $sql);
}

Açıkçası, kene veritabanı varlıkları ve geri sırasıyla değerleri kaçmak için, kendi Tick() ve Quote() işlevleri tanımlamak gerekir.

Peki sen soyutlama o kadar gidecek eğer o düşmek olur da soyut bir sınıf için bir sorgu yazma tüm süreci (vb Zend_Db_Select, Doctrine_Query, uskur Kriterleri, bkz.).

Ama senin için daha Jimmie yeni biri kaydolarak ise, onlar her zaman onay bekleyen wll biliyorum ... yani sunulmasından sonra form değerleri diziye eklemek, formundan bir valu kullanmak dont bile anlaşılacağı gibi, işaret ancak geçirmeden önce Sizin eklemek işlevselliği.

Bunun yerine kodu sizin SQL soyutlama, işlevsellik içinde bir veritabanının yapı kullanmak daha iyidir: mağazalar prosedürler (SP) veya bazı veritabanları sadece DB işlevlerini kullanın.

Eğer tablo yapısını asla değişmeyeceğini varsayımını (sürekli değişiklik ve yenilik alır bir uygulama üzerinde büyük bir hatadır) yapıyoruz, çünkü koduna soyut DB çalışma sesi değil.

Eğer gibi bir SQL arama yapmak SP'ler oluşturarak:

$query = "EmployeeAdd('joe','smith','1970-12-22')";

Şimdi kod soyutlanmış olmanın yararı vardır (ve hatta biraz olmayan veritabanı belirli) artı bir heves tablo yapısını değiştirmek ve tek bir kod satırı değiştirmek zorunda değildir. Tabii ki bir EmployeeGet () ve EmployeeUpdate () işlevleri oluşturmak gerekiyor bu tasarım zihniyet takip akılda tutmak ve bu gibi, bu birden çok sürümü, olması normaldir: EmployeeGetByID () EmployeesGetByJobID ()

O Veri + Eylem + gitmek önemli olduğu gibi, sözdizimi özel ihbar tazminatı nasıl becuase Eğer (GetEmployeeByID onları aramak olsaydı) o zaman listede SPs onlarca, olacak, tüm veritabanı için bu işlevler yazmak sonra tüm kötü organizasyon için yapar, bir araya getirir.

Eğer (ben soruyu okuduğumda ne var) bu yüzden yapıyoruz sadece, onları doğrudan eklemek için form alanları kullanmayın. CI, insert fonksiyonu 0 olarak gizli alan değeri geçmek ve bu ihtimal gitti.