PHP MySQLi Veritabanı Sınıfı

MySQLi için hazırlanmış fonksiyonel PHP MySQL sınıfı. Wrapper for a PHP MySQL class, which utilizes MySQLi and prepared statements.


Bu makale tamamen orjinal kaynaktan birebir alıntı yapılarak hazırlanmış olup, bana ait değildir.

https://github.com/ThingEngineer/PHP-MySQLi-Database-Class

Bu yazılım boş zamanlarımda geliştirildi ve birileri bana destek olursa sevinirim.

Herkesin zamanı değerli olmalı, bu yüzden lütfen bağış yapmayı düşünün.

Paypal ile bağış yap

Kurulum

Bu sınıfı kullanmak için, önce MysqliDb.php'yi projenize aktarın ve onu gerekli kılın.

require_once ('MysqliDb.php');

Composer ile kurulum

Ayrıca composer aracılığıyla kitaplık kurmak da mümkün

composer require thingengineer/mysqli-database-class:dev-master

Başlatma

Varsayılan olarak ayarlanan utf8 karakter kümesiyle basit başlatma:

$db = new MysqliDb ('host', 'username', 'password', 'databaseName');

Gelişmiş başlatma:

$db = new MysqliDb (Array (
                'host' => 'host',
                'username' => 'username', 
                'password' => 'password',
                'db'=> 'databaseName',
                'port' => 3306,
                'prefix' => 'my_',
                'charset' => 'utf8'));

Tablo öneki, bağlantı noktası ve veritabanı karakter kümesi parametreleri isteğe bağlıdır. Hiçbir karakter kümesinin karakter kümesi olarak ayarlanması gerekmiyorsa, bunu null olarak ayarlayın.

Ayrıca bağlı olan mysqli nesnesini yeniden kullanmak da mümkündür:

$mysqli = new mysqli ('host', 'username', 'password', 'databaseName');
$db = new MysqliDb ($mysqli);

Nesne oluşturma sırasında herhangi bir tablo ön eki ayarlanmamışsa, bunu daha sonra ayrı bir şekilde çağırmakta mümkündür:

$db->setPrefix ('my_');

Eğer mysql bağlantısı kesilirse, Mysqlidb veritabanına bir kez otomatik olarak yeniden bağlanmayı dener. Bu davranışı devre dışı bırakmak için şunu kullanın:

$db->autoReconnect = false;

Önceden oluşturulmuş mysqliDb nesnesini başka bir sınıftan veya işlevden almanız gerekiyorsa

    function init () {
        // db staying private here
        $db = new MysqliDb ('host', 'username', 'password', 'databaseName');
    }
    ...
    function myfunc () {
        // obtain db object created in init  ()
        $db = MysqliDb::getInstance();
        ...
    }

Çoklu veritabanı bağlantısı

Birden çok veritabanına bağlanmanız gerekiyorsa aşağıdaki yöntemi kullanın:

$db->addConnection('slave', Array (
                'host' => 'host',
                'username' => 'username',
                'password' => 'password',
                'db'=> 'databaseName',
                'port' => 3306,
                'prefix' => 'my_',
                'charset' => 'utf8')
);

Veritabanını seçmek için connection() yöntemini kullanın

$users = $db->connection('slave')->get('users');

Nesne eşleme

dbObject.php, model temsili işlevselliği sağlamak için mysqliDb üzerine inşa edilmiş bir nesne eşleme kitaplığıdır. Daha fazla bilgi için dbObject kılavuzuna bakın

Ekleme Sorgusu

Basit örnek

$data = Array ("login" => "admin",
               "firstName" => "John",
               "lastName" => 'Doe'
);
$id = $db->insert ('users', $data);
if($id)
    echo 'user was created. Id=' . $id;

İşlev kullanımıyla ekleme

$data = Array (
	'login' => 'admin',
    'active' => true,
	'firstName' => 'John',
	'lastName' => 'Doe',
	'password' => $db->func('SHA1(?)',Array ("secretpassword+salt")),
	// password = SHA1('secretpassword+salt')
	'createdAt' => $db->now(),
	// createdAt = NOW()
	'expires' => $db->now('+1Y')
	// expires = NOW() + interval 1 year
	// Supported intervals [s]econd, [m]inute, [h]hour, [d]day, [M]onth, [Y]ear
);

$id = $db->insert ('users', $data);
if ($id)
    echo 'user was created. Id=' . $id;
else
    echo 'insert failed: ' . $db->getLastError();

Yinelenen anahtar güncellemesiyle birlikte ekle

$data = Array ("login" => "admin",
               "firstName" => "John",
               "lastName" => 'Doe',
               "createdAt" => $db->now(),
               "updatedAt" => $db->now(),
);
$updateColumns = Array ("updatedAt");
$lastInsertId = "id";
$db->onDuplicate($updateColumns, $lastInsertId);
$id = $db->insert ('users', $data);

Aynı anda birden çok veri kümesi ekleme

$data = Array(
    Array ("login" => "admin",
        "firstName" => "John",
        "lastName" => 'Doe'
    ),
    Array ("login" => "other",
        "firstName" => "Another",
        "lastName" => 'User',
        "password" => "very_cool_hash"
    )
);
$ids = $db->insertMulti('users', $data);
if(!$ids) {
    echo 'insert failed: ' . $db->getLastError();
} else {
    echo 'new users inserted with following id\'s: ' . implode(', ', $ids);
}

Tüm veri kümeleri yalnızca aynı anahtarlara sahipse

$data = Array(
    Array ("admin", "John", "Doe"),
    Array ("other", "Another", "User")
);
$keys = Array("login", "firstName", "lastName");

$ids = $db->insertMulti('users', $data, $keys);
if(!$ids) {
    echo 'insert failed: ' . $db->getLastError();
} else {
    echo 'new users inserted with following id\'s: ' . implode(', ', $ids);
}

Değiştirme Sorgusu

replace() yöntemi, insert() ile aynı API'yi uygular;

Güncelleme Sorgusu

$data = Array (
	'firstName' => 'Bobby',
	'lastName' => 'Tables',
	'editCount' => $db->inc(2),
	// editCount = editCount + 2;
	'active' => $db->not()
	// active = !active;
);
$db->where ('id', 1);
if ($db->update ('users', $data))
    echo $db->count . ' records were updated';
else
    echo 'update failed: ' . $db->getLastError();

update() ayrıca limit parametresini de destekler:

$db->update ('users', $data, 10);
// Gives: UPDATE users SET ... LIMIT 10

Seçme Sorgusu

Herhangi bir seç/al işlev çağrısı miktarı veya döndürülen satırlar $count değişkeninde depolanır

$users = $db->get('users'); //contains an Array of all users 
$users = $db->get('users', 10); //contains an Array 10 users

veya özel sütunlar ayarlı olarak seçin. Fonksiyonlar da kullanılabilir

$cols = Array ("id", "name", "email");
$users = $db->get ("users", null, $cols);
if ($db->count > 0)
    foreach ($users as $user) { 
        print_r ($user);
    }

veya yalnızca bir satır seçme

$db->where ("id", 1);
$user = $db->getOne ("users");
echo $user['id'];

$stats = $db->getOne ("users", "sum(id), count(*) as cnt");
echo "total ".$stats['cnt']. "users found";

veya bir sütun değeri veya işlev sonucu seçme

$count = $db->getValue ("users", "count(*)");
echo "{$count} users found";

birden çok satırdan bir sütun değeri veya işlev sonucu seçme

$logins = $db->getValue ("users", "login", null);
// select login from users
$logins = $db->getValue ("users", "login", 5);
// select login from users limit 5
foreach ($logins as $login)
    echo $login;

Veri Ekleme

.CSV veya .XML verilerini de belirli bir tabloya yükleyebilirsiniz. .csv verilerini eklemek için aşağıdaki sözdizimini kullanın:

$path_to_file = "/home/john/file.csv";
$db->loadData("users", $path_to_file);

Bu, /home/john/ (John'un ana dizini) klasörüne file.csv adlı bir .csv dosyası yükleyecektir . İsteğe bağlı bir dizi seçenek de ekleyebilirsiniz. Geçerli seçenekler şunlardır:

Array(
	"fieldChar" => ';', 	// Char which separates the data
	"lineChar" => '\r\n', 	// Char which separates the lines
	"linesToIgnore" => 1	// Amount of lines to ignore at the beginning of the import
);

Bunları kullanarak ekleyin

$options = Array("fieldChar" => ';', "lineChar" => '\r\n', "linesToIgnore" => 1);
$db->loadData("users", "/home/john/file.csv", $options);
// LOAD DATA ...

DATA yerine LOCAL DATA kullanmayı belirtebilirsiniz :

$options = Array("fieldChar" => ';', "lineChar" => '\r\n', "linesToIgnore" => 1, "loadDataLocal" => true);
$db->loadData("users", "/home/john/file.csv", $options);
// LOAD DATA LOCAL ...

XML ekle

XML verilerini bir tabloya yüklemek için loadXML yöntemini kullanabilirsiniz . Sözdizimi, loadData sözdizimine benzer.

$path_to_file = "/home/john/file.xml";
$db->loadXML("users", $path_to_file);

İsteğe bağlı parametreler de ekleyebilirsiniz. Geçerli parametreler:

Array(
	"linesToIgnore" => 0,		// Amount of lines / rows to ignore at the beginning of the import
	"rowTag"	=> "<user>"	// The tag which marks the beginning of an entry
)

kullanım:

$options = Array("linesToIgnore" => 0, "rowTag"	=> "<user>"):
$path_to_file = "/home/john/file.xml";
$db->loadXML("users", $path_to_file, $options);

Sayfalama

Sayfalandırılmış sonucu almak için get() yerine paginate() kullanın

$page = 1;
// set page limit to 2 results per page. 20 by default
$db->pageLimit = 2;
$products = $db->arraybuilder()->paginate("products", $page);
echo "showing $page out of " . $db->totalPages;

Sonuç dönüşümü / harita

Saf bir sonuç dizisi elde etmek yerine, gerekli bir anahtarla ilişkisel bir dizide sonuç elde etmek mümkündür. Get() içinde getirilecek yalnızca 2 alan ayarlanacaksa, yöntem geri kalan durumlarda array($k => $v) ve array ($k => array ($v, $v)) ile sonuç döndürür.

$user = $db->map('login')->ObjectBuilder()->getOne('users', 'login, id');
Array
(
    [user1] => 1
)

$user = $db->map('login')->ObjectBuilder()->getOne('users', 'id,login,createdAt');
Array
(
    [user1] => stdClass Object
        (
            [id] => 1
            [login] => user1
            [createdAt] => 2015-10-22 22:27:53
        )

)

Dönüş tipi tanımlama

MysqliDb, sonucu 3 farklı formatta döndürebilir: Array of Array, Array of Objects ve bir Json dizisi. Dönüş türü seçmek için ArrayBuilder(), ObjectBuilder() ve JsonBuilder() yöntemlerini kullanın. 

ArrayBuilder() öğesinin varsayılan dönüş türü olduğunu unutmayın.

// Array return type
$u= $db->getOne("users");
echo $u['login'];
// Object return type
$u = $db->ObjectBuilder()->getOne("users");
echo $u->login;
// Json return type
$json = $db->JsonBuilder()->getOne("users");

Ham SQL sorguları çalıştırma

$users = $db->rawQuery('SELECT * from users where id >= ?', Array (10));
foreach ($users as $user) {
    print_r ($user);
}

Uzun if denetimlerinden kaçınmak için, ham sorgu seçim sonuçlarıyla çalışacak çift yardımcı işlev vardır:

1 satır sonuç alma

$user = $db->rawQueryOne('SELECT * from users where id=?', Array(10));
echo $user['login'];
// Object return type
$user = $db->ObjectBuilder()->rawQueryOne('SELECT * from users where id=?', Array(10));
echo $user->login;

Bir dize olarak 1 sütun değeri alma

$password = $db->rawQueryValue('SELECT password from users where id=? limit 1', Array(10));
echo "Password is {$password}";
NOTE: for a rawQueryValue() to return string instead of an array 'limit 1' should be added to the end of the query.

Birden çok satırdan 1 sütun değeri alma

$logins = $db->rawQueryValue('SELECT login from users limit 10');
foreach ($logins as $login)
    echo $login;

Daha gelişmiş örnek

$params = Array(1, 'admin');
$users = $db->rawQuery("SELECT id, firstName, lastName FROM users WHERE id = ? AND login = ?", $params);
print_r($users); // contains Array of returned rows

// will handle any SQL query
$params = Array(10, 1, 10, 11, 2, 10);
$q = "(
    SELECT a FROM t1
        WHERE a = ? AND B = ?
        ORDER BY a LIMIT ?
) UNION (
    SELECT a FROM t2 
        WHERE a = ? AND B = ?
        ORDER BY a LIMIT ?
)";
$results = $db->rawQuery ($q, $params);
print_r ($results); // contains Array of returned rows

Nerede / Sahip Olma Yöntemleri

where(), orWhere(), having()ve orHaving()yöntemleri, sorgunun nerede ve hangi koşullara sahip olduğunu belirtmenize olanak tanır. where() tarafından desteklenen tüm koşullar,() tarafından da desteklenir.

UYARI: Sütunlar arası karşılaştırmaları kullanmak için, yalnızca koşulların sütun adı olarak kullanılması gereken veya işlevlerin bir bağlama değişkeni olarak geçirilemediği ham durumlarda.

Normal == değişkenli operatör:

$db->where('id', 1);
$db->where('login', 'admin');
$results = $db->get ('users');
// Gives: SELECT * FROM users WHERE id=1 AND login='admin';
$db->where ('id', 1);
$db->having ('login', 'admin');
$results = $db->get ('users');
// Gives: SELECT * FROM users WHERE id=1 HAVING login='admin';

Sütundan sütuna karşılaştırmalı normal == işleci:

// WRONG
$db->where('lastLogin', 'createdAt');
// CORRECT
$db->where('lastLogin = createdAt');
$results = $db->get ('users');
// Gives: SELECT * FROM users WHERE lastLogin = createdAt;
$db->where('id', 50, ">=");
// or $db->where('id', Array ('>=' => 50));
$results = $db->get('users');
// Gives: SELECT * FROM users WHERE id >= 50;

ARASINDA / ARASINDA DEĞİL:

$db->where('id', Array (4, 20), 'BETWEEN');
// or $db->where('id', Array ('BETWEEN' => Array(4, 20)));

$results = $db->get('users');
// Gives: SELECT * FROM users WHERE id BETWEEN 4 AND 20

GİRİŞ / GİRİŞ DEĞİL:

$db->where('id', Array(1, 5, 27, -1, 'd'), 'IN');
// or $db->where('id', Array( 'IN' => Array(1, 5, 27, -1, 'd') ) );

$results = $db->get('users');
// Gives: SELECT * FROM users WHERE id IN (1, 5, 27, -1, 'd');

VEYA:

$db->where ('firstName', 'John');
$db->orWhere ('firstName', 'Peter');
$results = $db->get ('users');
// Gives: SELECT * FROM users WHERE firstName='John' OR firstName='peter'

BOŞ karşılaştırma:

$db->where ("lastName", NULL, 'IS NOT');
$results = $db->get("users");
// Gives: SELECT * FROM users where lastName IS NOT NULL

GİBİ karşılaştırma:

$db->where("fullName", 'John%', 'like');
$results = $db->get("users");
// Gives: SELECT * FROM users where fullName like 'John%'

Ayrıca, koşulların olduğu yerlerde ham kullanabilirsiniz:

$db->where("id != companyId");
$db->where("DATE(createdAt) = DATE(lastLogin)");
$results = $db->get("users");

Veya değişkenlerle ham durum:

$db->where ("(id = ? or id = ?)", Array(6,2));
$db->where ("login","mike");
$res = $db->get ("users");
// Gives: SELECT * FROM users WHERE (id = 6 or id = 2) and login='mike';

Eşleşen toplam satır sayısını bulma ve basit sayfalanma örneği

$offset = 10;
$count = 15;
$users = $db->withTotalCount()->get('users', Array ($offset, $count));
echo "Showing {$count} from {$db->totalCount}";

Anahtar Kelimeleri Sorgulama

DÜŞÜK ÖNCELİK eklemek için | GECİKMİŞ | YÜKSEK ÖNCELİK | INSERT(), REPLACE(), GET(), UPDATE(), DELETE() method veya FOR UPDATE | PAYLAŞIM MODUNU SELECT () içine KİLİTLEYİN:

$db->setQueryOption ('LOW_PRIORITY')->insert ($table, $param);
// GIVES: INSERT LOW_PRIORITY INTO table ...
$db->setQueryOption ('FOR UPDATE')->get ('users');
// GIVES: SELECT * FROM USERS FOR UPDATE;

Ayrıca bir dizi anahtar kelime de kullanabilirsiniz

$db->setQueryOption (Array('LOW_PRIORITY', 'IGNORE'))->insert ($table,$param);
// GIVES: INSERT LOW_PRIORITY IGNORE INTO table ...

Aynı şekilde, anahtar kelimeler SELECT sorgularında da kullanılabilir

$db->setQueryOption ('SQL_NO_CACHE');
$db->get("users");
// GIVES: SELECT SQL_NO_CACHE * FROM USERS;

İsteğe bağlı olarak, nesnenize tekrar tekrar başvurmadan birden çok kez nereye çağırmak için zincirlemeyi kullanabilirsiniz

$results = $db
	->where('id', 1)
	->where('login', 'admin')
	->get('users');

Silme Sorgusu

$db->where('id', 1);
if($db->delete('users')) echo 'successfully deleted';

Sıralama Yöntemi

$db->orderBy("id","asc");
$db->orderBy("login","Desc");
$db->orderBy("RAND ()");
$results = $db->get('users');
// Gives: SELECT * FROM users ORDER BY id ASC,login DESC, RAND ();

Değerlere göre sıralama örneği:

$db->orderBy('userGroup', 'ASC', array('superuser', 'admin', 'users'));
$db->get('users');
// Gives: SELECT * FROM users ORDER BY FIELD (userGroup, 'superuser', 'admin', 'users') ASC;

setPrefix() işlevini kullanıyorsanız ve orderBy() yönteminde tablo adlarını kullanmanız gerekiyorsa, tablo adlarının `` ile kaçış olduğundan emin olun.

$db->setPrefix ("t_");
$db->orderBy ("users.id","asc");
$results = $db->get ('users');
// WRONG: That will give: SELECT * FROM t_users ORDER BY users.id ASC;

$db->setPrefix ("t_");
$db->orderBy ("`users`.id", "asc");
$results = $db->get ('users');
// CORRECT: That will give: SELECT * FROM t_users ORDER BY t_users.id ASC;

Gruplama yöntemi

$db->groupBy("name");
$results = $db->get('users');
// Gives: SELECT * FROM users GROUP BY name;

JOIN yöntemi

tenantID tarafından LEFT JOIN ile kullanıcı tablosuyla birleştirme

$db->join("users u", "p.tenantID=u.tenantID", "LEFT");
$db->where("u.id", 6);
$products = $db->get ("products p", null, "u.name, p.productName");
print_r ($products);
// Gives: SELECT u.name, p.productName FROM products p LEFT JOIN users u ON p.tenantID=u.tenantID WHERE u.id = 6

Katılım Koşulları

İfadeye katılmak için AND koşulu ekleyin

$db->join("users u", "p.tenantID=u.tenantID", "LEFT");
$db->joinWhere("users u", "u.tenantID", 5);
$products = $db->get ("products p", null, "u.name, p.productName");
print_r ($products);
// Gives: SELECT  u.name, p.productName FROM products p LEFT JOIN users u ON (p.tenantID=u.tenantID AND u.tenantID = 5)

İfadeye katılmak için VEYA koşulu ekleyin

$db->join("users u", "p.tenantID=u.tenantID", "LEFT");
$db->joinOrWhere("users u", "u.tenantID", 5);
$products = $db->get ("products p", null, "u.name, p.productName");
print_r ($products);
// Gives: SELECT  u.login, p.productName FROM products p LEFT JOIN users u ON (p.tenantID=u.tenantID OR u.tenantID = 5)

Mülk paylaşımı

Özellikleri kopyalamak da mümkündür

$db->where ("agentId", 10);
$db->where ("active", true);

$customers = $db->copy ();
$res = $customers->get ("customers", Array (10, 10));
// SELECT * FROM customers WHERE agentId = 10 AND active = 1 LIMIT 10, 10

$cnt = $db->getValue ("customers", "count(id)");
echo "total records found: " . $cnt;
// SELECT count(id) FROM customers WHERE agentId = 10 AND active = 1

Alt Sorgular

alt sorgu başlangıcı

Eklerde/güncellemelerde/nerede

$sq = $db->subQuery();
$sq->get("users");

JOIN'lerde kullanılmak üzere belirtilmiş takma adı olan bir alt sorgu

$sq = $db->subQuery("sq");
$sq->get ("users");

Seçimlerde alt sorgu

$ids = $db->subQuery ();
$ids->where ("qty", 2, ">");
$ids->get ("products", null, "userId");

$db->where ("id", $ids, 'in');
$res = $db->get ("users");
// Gives SELECT * FROM users WHERE id IN (SELECT userId FROM products WHERE qty > 2)

Eklerdeki alt sorgu

$userIdQ = $db->subQuery ();
$userIdQ->where ("id", 6);
$userIdQ->getOne ("users", "name"),

$data = Array (
    "productName" => "test product",
    "userId" => $userIdQ,
    "lastUpdated" => $db->now()
);
$id = $db->insert ("products", $data);
// Gives INSERT INTO PRODUCTS (productName, userId, lastUpdated) values ("test product", (SELECT name FROM users WHERE id = 6), NOW());

Birleştirmelerde alt sorgu

$usersQ = $db->subQuery ("u");
$usersQ->where ("active", 1);
$usersQ->get ("users");

$db->join($usersQ, "p.userId=u.id", "LEFT");
$products = $db->get ("products p", null, "u.login, p.productName");
print_r ($products);
// SELECT u.login, p.productName FROM products p LEFT JOIN (SELECT * FROM t_users WHERE active = 1) u on p.userId=u.id;

VAR / YOK koşulu

$sub = $db->subQuery();
$sub->where("company", 'testCompany');
$sub->get ("users", null, 'userId');
$db->where (null, $sub, 'exists');
$products = $db->get ("products");
// Gives SELECT * FROM products WHERE EXISTS (SELECT userId FROM users WHERE company='testCompany')

Mevcutluk Kontrolü (Var/Yok)

Bundan önce "where" yöntemini çağırarak belirtilen where koşulunu sağlayan en az bir öğe varsa, TRUE döndüren kullanışlı bir işlev.

$db->where("user", $user);
$db->where("password", md5($password));
if($db->has("users")) {
    return "You are logged";
} else {
    return "Wrong user/password";
}

Yardımcı yöntemler

Veritabanı bağlantısını kesme

    $db->disconnect();

mysql bağlantısının kesilmesi durumunda tekrar bağlanma

if (!$db->ping())
    $db->connect()

Son çalıştırılan SQL sorgusunu alma

Lütfen bu yöntemin SQL sorgusunu yalnızca hata ayıklama amacıyla döndürdüğünü unutmayın, çünkü yürütülmesi büyük olasılıkla char değişkenlerinin etrafındaki eksik alıntılar nedeniyle başarısız olacaktır.

    $db->get('users');
    echo "Last executed query was ". $db->getLastQuery();

Tablonun var olup olmadığını kontrol edin:

    if ($db->tableExists ('users'))
        echo "hooray";

mysqli_real_escape_string()

    $escaped = $db->escape("' and 1=1");

İşlem Yardımcıları

İşlemlerin innoDB tablolarında çalıştığını lütfen unutmayın.

Ekleme başarısız olursa geri alma işlemi

$db->startTransaction();
...
if (!$db->insert ('myTable', $insertData)) {
    //Error while saving, cancel new record
    $db->rollback();
} else {
    //OK
    $db->commit();
}

Hata yardımcıları

Bir sorgu yürüttükten sonra, bir hata olup olmadığını kontrol etme seçenekleriniz olur. MySQL hata dizesini veya son yürütülen sorgunun hata kodunu alabilirsiniz.

$db->where('login', 'admin')->update('users', ['firstName' => 'Jack']);

if ($db->getLastErrno() === 0)
    echo 'Update succesfull';
else
    echo 'Update failed. Error: '. $db->getLastError();

Sorgu yürütme süresi karşılaştırması

Sorgu yürütme süresini izlemek için setTrace() işlevi çağrılmalıdır.

$db->setTrace (true);
// As a second parameter it is possible to define prefix of the path which should be striped from filename
// $db->setTrace (true, $_SERVER['SERVER_ROOT']);
$db->get("users");
$db->get("test");
print_r ($db->trace);
    [0] => Array
        (
            [0] => SELECT  * FROM t_users ORDER BY `id` ASC
            [1] => 0.0010669231414795
            [2] => MysqliDb->get() >>  file "/avb/work/PHP-MySQLi-Database-Class/tests.php" line #151
        )

    [1] => Array
        (
            [0] => SELECT  * FROM t_test
            [1] => 0.00069189071655273
            [2] => MysqliDb->get() >>  file "/avb/work/PHP-MySQLi-Database-Class/tests.php" line #152
        )

Tablo Kilitleme

Tabloları kilitlemek için, kilit yöntemini setLockMethod ile birlikte kullanabilirsiniz . Aşağıdaki örnek, tablo kullanıcılarını yazma erişimi için kilitleyecektir .

$db->setLockMethod("WRITE")->lock("users");

Başka bir lock() çağrısı ilk kilidi kaldıracaktır

$db->unlock();

Önceki kilitli tabloların kilidini açmak için birden çok tabloyu kilitlemek için bir dizi kullanabilirsiniz.

$db->setLockMethod("READ")->lock(array("users", "log"));

Bu, tablo kullanıcılarını kilitler ve yalnızca OKUMA erişimi için günlüğe kaydeder . Daha sonra * lock() işlevini kullandığınızdan emin olun , aksi takdirde masalarınız kilitli kalır!