Öncelikle, ben bu veritabanı tasarımı gerçekten sevmiyorum. Yani aslında olduğu gibi, bunun yerine {[(1 gibi bir şey yapmak isteyebilirsiniz (yani 100Gb gibi şeyler için tam bir BIGINT gerektirecek) bir tamsayı olarak sınırı saklayarak bayt düzeyinde hassas alan atık değil )]} ve limit_unit ENUM('b','kb','Mb','Gb'). Veritabanından çekerek Sonra, sadece bir bayt değerini almak için basit bir matematik yapabilirsiniz:
$limit_amount = 10; // pull from
$limit_unit = 'Mb'; // database
$units = array('b' => 1, 'kb' => 125, 'Mb' => 125000, 'Gb' => 125000000);
$limit_in_bytes = $limit_amount * $units[$limit_unit];
(Not kB ve MB, daha yaygın birimlerinden farklı birimler kullanımlar kb ve Mb, bu sistem. Eğer Eğer ikincisi istedi, doğru dönüşüm yapmak!)
Bu çok daha fazla veri-verimli dizeleri olarak depolamak yerine, dizeleri girerken kullanıcıların "5lolCats" gibi saçma birimlerde koyamazsınız sağlar, ve kolay geri bayt veri çekmek için yapar.
... Ya da sadece bigint kullanabilirsiniz. Ben gerçekten çok sürece dizeleri olarak tamsayı değerleri saklamak değil gibi, umursamıyorum.
Tahdah. Sen bayt yerine bir dizge olarak veritabanından miktarı çekti, ve şimdi garabeti karşılaştırmak sihirli dize olmadan doğrudan bir tamsayı karşılaştırma yapabilirsiniz.