2010-11-20 23 views
0

Özel bir veritabanı sınıfına gerçekten ihtiyaç olup olmadığını merak ediyordum. Demek istediğim: Web üzerinde çok fazla veri tabanı soyutlama katmanı ve özel veritabanı sınıfı gördüm. Ama neden tekerleği yeniden icat etmeliyiz? Neden sadece mysqli ana sınıfını kullanmam ve gerçekten ihtiyacım olursa onu genişletmemeliyim? mysqli sınıfı, güncel ve yereldir. Kişiler, zaten varken query() yöntemi, fetch() yöntemi ve free() yöntemiyle kendi sınıflarını neden oluşturuyor? Mysqli de ifadeler hazırladı, sql enjeksiyonunu oradan uzak tutmanın en güvenli yollarından biri.Mysqli veya özel veritabanı sınıfı?

+0

Hangi dili kullanıyorsunuz? – geon

+0

@geon: MySQLi bir PHP uzantısıdır. –

cevap

1

MySQLi uzantısının kullanımını kolaylaştırır. MySQLi ile hazırlanan istatistikleri kullanmak çok hantal ve çok fazla kod gerektiriyor ve aynı temel kodu her yerde çoğaltabilirsiniz.

bir ambalaj kağıdı ile Halbuki böyle şeyler yapabilirsiniz:

$rows = $db->Query (' 
    SELECT 
    * 
    FROM 
    table_name 
    WHERE 
    field = ? 
    AND field2 = ? 
    ', 
    Array (
    Array ('s', 'some val'), 
    Array ('i', 42) 
) 
); 
+0

Ve neden bu kadar çok daha iyi olmalı $ stmt = $ dbh-> hazırla ("INSERT INTO REGISTRY (isim, değer) DEĞERLERİ (: isim,: değer)"); $ stmt-> bindParam (': name', $ name); $ stmt-> bindParam (': value', $ value); – Shoe

+0

Çünkü yazdıklarınızdan çok daha fazla kod var. –

+0

Evet, ama çok daha fazla esneklik de. Fonksiyonunuzla, gerçekte hazırlanmış ifadelerin gücünü kullanmadan doğrudan bir sorgu oluşturabilirsiniz (bir beyanı belirtin ve bunu birden çok kez kullanın). – Shoe

0

ayrıca veritabanından veri erişimde bir nesne yönelimli yaklaşım alabilir. Örneğin. Tüm veri alımlarınızı bir php sınıfına sığdırır. ve mysqli modülü

0

kullanarak tüm veri alma yöntemlerini sınıf işlevlerinin içine yazın Ortak CRUD işlemleri için aynı tekrar eden kod yazmak düz SQL'de zahmetlidir. Object-Relational Mappers'ın bu soruna nasıl yaklaştığını görün: Good PHP ORM Library?