Bu yazıda PDO'nun ne olduğu, neden gerekli olduğu ve onunla nasıl çalışılacağı hakkında konuşacağız. Php programcılarının uzun zamandır veritabanıyla çalışmak için yerel işlevlerin kaderini tartışmasıyla başlayalım: mysql_connect, mysql_query ve diğerleri. Gerçek şu ki, PHP verilerinin gelecek sürümlerinde silinecek, bu işlevler "Eski" olacak. Bu nedenle PHP geliştiricileri diğer araçları veritabanıyla çalışmaya zorlamalıdır.   Şu anda iki alternatif çözüm var; mysqli uzantısı ve PDO'nun genişletilmesi. Bu yazıda PDO'yu tartışacağız. PDO - PHP Veri Nesneleri - çoklu veritabanları ile çalışmak için çok yönlü bir yol sunan bir katmandır. Bu katmanın birkaç avantajı vardır:
  • PDO, MYSQL, Oracle, PostgreSQL ve diğerleri gibi farklı veritabanları ile çalışmanıza izin verir.
  • PDO, hazırlanmış bir ifadeyle çalışmanıza izin verir
Şimdi tüm bunları daha detaylı konuşalım.

PDO Kullanarak Veritabanına Bağlanma

PDO ile çalışmaya başlamadan önce, doğru uzantıya sahip olduğunuzdan emin olmalısınız - php_pdo_mysql.dll. Bu phpinfo () işlevi ile doğrulanabilir. Her şey yolundaysa, gitmekte fayda var.   Öncelikle veritabanına bağlanmamız gerekiyor:  
/ / MuSQL
    $Database = new PDO ("mysql: host = $ host; dbname = $Databasename", $username, $password); 
/ / PostgreSQL
    $Database = new PDO ("pgsql: host = $ host; dbname = $Databasename", $username, $password);
/ / MS SQL
    $Database = new PDO ("mssql: host = $ host; dbname = $Databasename", $username, $password); 
/ / SQLite
    $Database = new PDO ("sqlite: my / database / path / database.db");
Örnekten de görebileceğiniz gibi, her veritabanı bağlantı dizesi birbirinden biraz farklıdır. Birime bağlanmaya çalışırken her zaman try/catch kullanmalısınız, böylece istisnai durumlarda kullanıcıya herhangi bir veri açıklamayız.  
try {
    $Database = new PDO ("mysql: host = $ host; dbname = $Databasename", $username, $password); 
} 
catch (PDOException $ e) { 
    echo "Unable to connect to database"; 
}
PDO'da bağlantıyı kapatmanın özel bir yöntemi yoktur, değişkeni geçersiz kılarak bağlantıyı kapatabiliriz: $Database = null;

PDO ile Sorgular

Şimdi az önce oluşturduğumuz bağlantı için PDO'daki sorgulardan bahsedelim. Üç ana yöntem vardır:

Method $Database-> query Bu yöntem, korunmadığından basit sorgular için kullanılır. Bir hata oluşursa FALSE döndürür.  
$Database-> query ("SELECT * FROM site_info");
$Database-> query ("DELETE FROM site_info");

Method $Database-> exec
Bu yöntem, herhangi bir veri döndürmediğiniz durumlarda kullanılır. Yöntem, etkilenen kayıtların sayısını veya hata durumunda FALSE değerini döndürür.

$Res = $Database-> exec ("DELETE FROM site_info");
$Database-> prepare

Hazırlanan ifadelerden yöntem sorumludur ve kullanılması teşvik edilir.

/ / Anonymous placeholders
$Res = $Database-> prepare ("INSERT INTO users (name, phone, city) values (?,?,?)"); 
/ / Registered placeholders
    $Res = $Database-> prepare ("INSERT INTO users (name, site, software) values (: name,: site,: software)");
Sorguyu hazırladıktan sonra sorgu çalıştırılabilir.   $Res-> execute ($Data) .   "chips" PDO'larından biri, hatırladığınız gibi, sadece kayıtlı yer tutuculardır. onlarla çalışırken daha detaylı bakalım:   Registered placeholders  
$Data = array ();
$Data ['name'] = 'developer resources';
$Data ['site'] = 'ssiddique.info';
$Data ['software'] = 'wordpress';
$Res = $Database-> prepare ("INSERT INTO site_info(name, site, software) values (: name,: site,: software)");
$Res-> execute ($Data);

İsimsiz yer tutucuların kullanımı, kişisel olarak hiç kullanmama rağmen, iyi bir uygulama olarak kabul edilir.

$Data = array ();
$Data ['name'] = 'developer resources';
$Data ['site'] = 'ssiddique.info';
$Data ['software'] = 'wordpress';
$Res = $Database-> prepare ("INSERT INTO site_info(name, site, software) values (?,?,?)");
$Res-> execute ($Data);
Şimdi verilerin nasıl getirileceğini görelim $Res-> fetch - Sonraki satırı çeker ve gerekli biçimde geri döner. $Res-> fetchAll - seçilen tüm satırların bir dizisini döndürür. $Res-> fetchObject - sonraki satırı seçer ve bir nesne olarak döndürür. Yöntem  $Res-> fetchek parametreler alabilir.  
while ($ res = $ res-> fetch ())
{
    echo $ res-> name;
}