PHP PDO Veri Nasıl Eklenir

[TBR=https://forum.mevsim.org/images/images/2021/02/06/php48.png]PHP PDO Veri Eklenir[/TBR]
PDO ile veri çekme işlemi için öncelikle PDO Veritabanı Bağlantısı ile bağlantı yapılıp uygun SQL</b> komutunun yazılması yeterli olacaktır.
PDO ile veri çekme işleminde SELECT deyimi, bir veritabanından veri çekmek için kullanılır.

Select Sözdizimi


[INFORMATION]SELECT column1, column2, ... FROM tablo_adi;
Burada, sütun1, sütun2, ..., içinden veri seçmek istediğiniz tablonun alan adlarıdır. Tabloda bulunan tüm alanları seçmek istiyorsanız, aşağıdaki sözdizimini kullanın[/INFORMATION]
Burada, sütun1, sütun2, ..., içinden veri seçmek istediğiniz tablonun alan adlarıdır. Tabloda bulunan tüm alanları seçmek istiyorsanız, aşağıdaki sözdizimini kullanın
[INFORMATION]SELECT * FROM tablo_adi;[/INFORMATION]
PDO ile veri çekmek için öncelikle bir veritabanı bağlantısı yapalım.

PHP:
<?php
$dsn = "mysql:host=localhost;dbname=test;charset=utf8mb4";
$user = "root";
$passwd = "";
$db = new PDO($dsn, $user, $passwd);
?>
localhost: Veritabanı kurulumunuz aynı sunucudaysa localhost kalabilir. Farklı bir sunucudaysa sunucu ip adresini yazmanız gerekiyor.
dbname: Veritabanı adı
$user: Veritabanı kullancı adı (default "root")
$pasword: Veritabanı kullanıcı şifre (default olarak boş bırakılır. Siz <b>mysql</b> kullanıcısı için bir şifre belirlediyseniz o şifreyi girmeniz gerekiyor)
PDO::exec() yöntemi bir SELECT deyiminin sonucunu döndürmez. Bir SELECT deyimini uygulamanız boyunca sadece bir defa çalıştıracaksanız PDO::query() yöntemini kullanabilirsiniz. Defalarca çalıştıracaksanız PDO::prepare() ile bir PDOStatement nesnesi hazırlayıp bunu PDOStatement::execute() ile çalıştırabilirsiniz.

SQL Hata Mesajı Nasıl Alınır?


SQL kodlarda Hata oluştuğunda hata mesajını almak için PDO bağlantının altına Aşağıda ki belirtilen kodları ekleyin.
PHP:
$db = new PDO($dsn, $user, $passwd);

$db-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_WARNING);
//pdo bağlantı altına bu kodu SQL hatalarını görmek için ekleyin
Veritabanı tablonuzda yer alan verileri listelemek istediğinizde SELECT komutunu kullanırsınız. Aşağıdaki örnekte tablonuzda tüm kayıtları nasıl listeleyeceğinizi görebilirsiniz.
PHP:
<?php
try {
  $dsn = "mysql:host=localhost;dbname=test;charset=utf8mb4";
  $user = "root";
  $passwd = "";

  $db = new PDO($dsn, $user, $passwd);
  $db-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_WARNING);
  $db = $db->query("SELECT * FROM deneme");

  $oku = $db->fetchAll(PDO::FETCH_ASSOC); //verilerin hepsi

  foreach ($oku as $row) {
  extract($row);
  echo "Adı:..$ad Soyad:..$soyad Email:..$email
";
  }
          
  } catch ( PDOException $e ){
     echo "Bir Hata Oluştu: ".$e->getMessage();
 }
?>
Dizideki sütun isimlerini dizi halinde değilde değişken şekilde yazmak için extract fonksiyonundan faydalanıyoruz.
Veritabanımızdan Tek bir veri getirelim.
PHP:
<?php

$sql = "SELECT * FROM test where id=2";

$oku = $db->query($sql);

$oku = $oku->fetch(PDO::FETCH_ASSOC); // Tek veri

extract($oku);

echo "Adı:..$ad Soyad:..$soyad Email:..$email<br/>";

?>

Veri Alma Yöntemleri


Verileri data->fetch() methodu kullanılarak alınabilir. Verileri aramadan önce, hangi biçime ihtiyaç duyulduğunu açıkça belirtmeniz önerilir. Birkaç seçenek var
PDO :: FETCH_ASSOC: Anahtar olarak sütun adlarıyla bir dizi döndürür.
PDO :: FETCH_BOTH (varsayılan): Hem sütun adları hem de sıra numaraları biçiminde indisleri olan bir dizi döndürür.
PDO::FETCH_BOUND: Sütun değerlerini PDOStatement::bindColumn()< ile ilişkilendirilmiş PHP değişkenlerine atar ve TRUE döndürür.
PDO :: FETCH_CLASS: Sütun sınıflarını belirtilen sınıfın uygun özelliklerine atar. Bazı sütun için özellik yoksa, oluşturulacak.
PDO :: FETCH_INTO: Belirtilen sınıfın mevcut bir örneğini günceller</li>
PDO::FETCH_LAZY: PDO::FETCH_BOTH ve PDO::FETCH_OBJ sabitlerinin birleşimidir.
PDO::FETCH_NUM: Sütun numaralarına göre indislenmiş bir dizi döner. İlk sütunun indisi 0'dır.
PDO::FETCH_OBJ: Özellik isimlerinin sınıf isimlerine denk düştüğü bir anonim nesne örneği döndürür.

Hazırlanmış İfadeler Ve Güvenlik


SQL sorgunuz değişkenler içeriyorsa hazırlanmış ifadeler kullanılmalıdır.
[ALERT]Hazırlanan ifadeleri kullanmak, SQL enjeksiyonlarına karşı korumayı artırır.[/ALERT]
Hazırlanan bir ifade, sunucuya yalnızca farklı veri kümeleri göndererek sürekli olarak çalıştırılabilen önceden derlenmiş bir SQL ifadesidir. Bu, yer tutucularda kullanılan verilerin otomatik olarak SQL enjeksiyon saldırılarına karşı güvenli hale getirilmesi avantajına sahiptir.
PDO'da hazırlanmış ifadeler, bir değişkenin özel bir işaretçi - bir yer tutucuyla değiştirildiği normal bir SQL sorgusudur.
PHP:
$query = $db->prepare("SELECT * FROM uyeler WHERE id=:uye_id AND ad=:uye_ad");
$query->bindParam(':uye_id',$id);
$query->bindParam(':uye_ad',$ad);
$query->execute();

if ( $query->rowCount() ){
     foreach( $query as $row ){
       echo $row['sutunadi']."<br>";// sutunadi misal ad,email...
     }
}
else{
    echo "Kayıt bulunamadı";
}
PDO'da hazırlanmış ifadeler, bir değişkenin özel bir işaretçi - bir yer tutucuyla değiştirildiği normal bir SQL sorgusudur.
PHP:
$query = $db->prepare("SELECT * FROM tabloadi WHERE id=:uye_id AND ad=:uye_ad");
$query->execute(array($id,$ad));// Liste halinde gönderiliyor.

if ( $query->rowCount() ){
     foreach( $query as $row ){
          echo $row['sutunadi']."<br>";
     }
}
else{
    echo "Kayıt bulunamadı";
}

Adsız yer tutucular


Şimdi isimsiz yer tutucularla çalışmaya bakalım.
PHP:
$query = $db->prepare("SELECT * FROM tabloadi WHERE id=? AND ad=?");

$query->execute(array($id,$ad));
Bu sözdiziminde, bir yer tutucu kaydı :üye_ad yerine <b>?</b> adsız yer tutucu belirtilmiş.

PDO Veritabanı Sonlandırma


Veritabanı işlemlerimiz bittikten sonra veritabanı ile bağlantıyı sonlandırmak için yapmamız gereken şey bağlantımıza null değeri vermek. Aşağıdaki örnek kodumuzu inceleyelim.
$db = null;
PDOStatement-&gt;rowCount:
Son SQL deyiminden etkilenen satır sayısını döndürür.
 
Üst
Alt