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.
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();
}
Ali Palakılıç 06/07/2021
yönetici 07/07/2021
$ekle = $db->exec("INSERT INTO test (ad, soyad, email)
VALUES ($ad, $soyad, $email)");
yakup bakış 12/01/2022
yönetici 13/01/2022
- HTML
- CSS
- PHP
- JQUERY
- PHOTOSHOP
- JavaScript
- Web Dünyası
- Linux
- MİTHRİL FRAMEWORK
- Laravel
- Git
- React
- HTML LİNK(Bağlantı)EKLEME - LİNK VERME
- HTML YAZI VE RESİM ORTALAMA
- HTML RESME LİNK VERME
- HTML FORM OLUŞTURMA
- CSS YATAY MENÜ YAPIMI
- HTML RESİM EKLEME
- CSS (BOYUT) GENİŞLİK VE YÜKSEKLİK (Width-Height)
- HTML DİV ve SPAN NEDİR?
- HTML ARKAPLANA MÜZİK EKLEME
- KALİTE KAYBETMEDEN RESİMLERİ BÜYÜTME