PHP Benzersiz Metin Alanı?

4 Cevap php

Ben bir tablo var ve ben yine bir URL ile bir metin alanı var, ben yinelenen URL ile herhangi bir satır istemiyorum ama ben oldukça takmadan önce bir kontrol yapmak istemem, hiçbir bir metin alanı benzersiz yapmak için yol ya da yoktur Başka bir alan türü kullanmak önerebilirsiniz?

4 Cevap

Veritabanında metin alanına bir ekleme deyimi daha benzersiz veya birincil anahtarı veya ancak bunu kurdunuz, ayarlı ise girişine bir kopyasını çalışırken üzerine başarısız olur. Yapmanız gereken gereken yolu tüm düzgün başarısız elemanını işlemek ve onu var olduğunu.

Başka bir yerde belirttiği gibi, gerçek bir METİN alan benzersiz olmak zorunda değildir, ancak bir varchar alan kullanıyorsanız, yapılabilir olduğunu. Bir METİN alanda URL depolamak eğer, siz de endişelenecek başka sorunları var, çünkü bu, (sadece bir iletişimsizlik olabilir) hiç önemli olmayabilir.

Çözüm temelde VARCHAR ve Endeks benzersiz vermek yapmak, field_hash gibi veritabanı üzerinde ekstra bir alan eklemek olduğunu.

CREATE TABLE 'info' (
'text' text NOT NULL,
'text_hash' varchar(40) NOT NULL,
PRIMARY KEY ('id'),
UNIQUE KEY 'text_hash' ('text_hash')
);

$text = 'Full Text';
$text_hash = sha1($text);

mysql_query("INSERT INTO info (text, text_hash) VALUES ('$text', '$text_hash')");

Sen URL alanına bir karmasını içeren başka bir alanı kullanarak deneyebilirsiniz.

Doğru yolu, evet o zaman insert bağışta bulunan kimse, başka, eklerseniz url, tabloda olup olmadığını kontrol etmektir.

Aslında gerektirdiği en iyi uygulama, İstisna Yönetimi kullanılmalıdır olarak, bir normal fonksiyonlarının yerine olarak kullanılmamalıdır.