PHP PDO Veri Ekleme

Php ile Pdo Nesnesi kullanarak veri ekleme yapacağız. PDO ile veri ekleme işlemi exec ve prepare methodu ile yapılabilir.

Tablodaki satırları değiştiren ancak satır ve sütunlarla sonuç kümesi döndürmeyen sorgular (INSERT, UPDATE ve DELETE), exec() methodu ile gönderilir, bu Method, etkilenen satırların sayısını veya hata durumunda "0" değerini döndürür.

PDO::exec() methodu çalıştırılan SQL deyimiyle silinen veya değiştirilen satırların sayısını döndürür. Etkilenen satır yoksa PDO::exec() 0 (sıfır) döndürür.

Formun Hazırlanması


Verilerin düzgün ve eksizsiz olarak girilmesi için HTML5 input Özelliklerinden faydalanacağız.


<form action="" method="post">
    Adınız:<br>
    <input type="text" name="adi" required="required" /><br>
    Soyadınız:<br>
    <input type="text" name="soyadi" required="required" /><br/>
    E-posta Adresiniz:<br/>
    <input type="email" name="eposta" required="required" />
    <input type="submit" value="Kaydet" />
</form>

Gerekli kontrol ve PHP ile Verilerin güvenlik filitreleri yapıldıktan sonra PHP PDO Veri Bağlantısı ve PHP PDO Kullanımı yazılarındaki bilgilerden faydalanarak veritabanı bağlantısı yapıp Veri ekleme işlemi yapacağız.

Verilerin Veritabanına Kaydedilmesi


Veritabanımızda adi, soyadi sütunları olsun.


<?php
try {
  $dsn = "mysql:host=localhost;dbname=test;charset=utf8mb4";
  $user = "root";
  $passwd = "";

  $db = new PDO($dsn, $user, $passwd);
  //SQL gibi hatalarıda almak için aşağıdaki kod yazılır.
  $db-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_WARNING);

  $ekle = $db->exec("INSERT INTO test ( adi, soyadi)
  VALUES ( '$ad', '$soyad')");

          
  } catch ( PDOException $e ){
     echo "Bir Hata Oluştu: ".$e->getMessage();
 }
?>

SQL Injection


SQL Injection, veritabanına dayalı uygulamalara saldırmak için kullanılan bir atak tekniğidir. Ayrıca MySQL katı modda çalıştığından metinlerde yer alan tırnak ifadelerinden dolayı hata verecektir. Daha önce bu özel karakterlerden kaçmak için mysql_real_escape_string() kodu kullanıyorduk PDO ile PDO::quote methodu gelmiştir. Veriler Dışardan alıyorsak Aşağıdaki kodları kullanarak veri güvenliği sağlanmalı.

PDO::quote Methodu, mesajı tırnaklar içine otomatik sarar SQL ifadelerde tırnak içinde belirtmeyin.


$ders="PHP";

$ad = $db->quote($ders);

echo $ad; //ÇIKTI: 'PHP'

PDO::quote methodu kullanırken SQL ifadede values(Değerler) misal VALUES ('$ad', '$soyad', '$email') içindeki değişkenler tırnak içine alınmayacaktır çünkü methodun kendi otomatik oluşturur.


<?php

$db = new PDO('mysql:host=localhost;dbname=test', $user, $pass);

$ad = $db->quote($_POST["ad"]);

$soyad = $db->quote($_POST["soyad"]);

$email = $db->quote($_POST["email"]);

$ekle = $db->exec("INSERT INTO test (ad, soyad, email)
VALUES ($ad, $soyad, $email)");

?>

Son otomatik olarak eklenen "id" (AUTO_INCREMENT PRIMARY KEY sütunu) almak için lastInsertId() yöntemini kullanın. SQL INSERT deyimi için kullanılır.


echo $db-> lastInsertId ();

Verilerin kaydedildiğini öğrenmek için:


echo $ekle; // 1 ve 0 değeri yani TRUE ve FALSE

Bu kodu if ifadesi ile kullanırsa yapılıp, yapılmayacakları belirtebiliriz.


<?php

if($ekle){

echo "Veriler eklendi."	

}else{

echo "Veriler eklenmedi"	
}

?>

Hazırlanmış İfadeler


Hazırlanmış ifadelerden dışarıdan veri almada SQL Injection Korunmak için PDO::quote Methodu ile uğraşmayacaız, prepare(sql) methodu ile verileri Güvenli yükleriz.

Hazırlanmış ifadeleri yani prepare() Methodunu kullanmak, SQL enjeksiyonlarına karşı korumayı artırır.

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);

 $query = $db->prepare("INSERT INTO test SET adi=?, soyadi=?");
 $insert = $query->execute(array($ad,$soyad));
          
  } catch ( PDOException $e ){
     echo "Bir Hata Oluştu: ".$e->getMessage();
 }

Lütfen konu haricinde soru sormayın cevaplanmayacaktır. Yorumunuz onaylandıktan sonra yayınlanacaktır.

6661

KATEGORİ
  • HTML
  • CSS
  • PHP
  • JQUERY
  • PHOTOSHOP
  • JavaScript
  • Web Dünyası
  • Linux
  • MİTHRİL FRAMEWORK
  • Laravel
POPÜLER MAKALE
  • HTML LİNK(Bağlantı)EKLEME - LİNK VERME
  • HTML YAZI VE RESİM ORTALAMA
  • HTML RESME LİNK VERME
  • HTML DİV ve SPAN NEDİR?
  • HTML FORM OLUŞTURMA
  • HTML RESİM EKLEME
  • HTML KAYAN RESİM VE Marguee KULLANIMI
  • CSS (BOYUT) GENİŞLİK VE YÜKSEKLİK (Width-Height)
  • HTML ARKAPLANA MÜZİK EKLEME
  • KALİTE KAYBETMEDEN RESİMLERİ BÜYÜTME
ETİKET
WEBCEBİR © 2013 Tüm hakları saklıdır.