Skip to content

Instantly share code, notes, and snippets.

@ardakazanci
Last active July 9, 2024 10:53
Show Gist options
  • Save ardakazanci/06e70a9569f2253e3f246907cade3e2a to your computer and use it in GitHub Desktop.
Save ardakazanci/06e70a9569f2253e3f246907cade3e2a to your computer and use it in GitHub Desktop.
Php OOP - Database Operations - Veritabanı İşlemleri
<?php
/*
* Bir ürün listelsi üzerinde işlem yaptığımızı düşünelim.
* Buna ait listeleme , güncelleme vs. formlarının yapıldığını farz edelim.
* Bu sınıf ile kod karmaşasından kurtulabilirsiniz.
*
*/
class mySQL
{
public $db, $sql;
public function __construct() // Başlangıç metodu
{
$this->db = @new mysqli('localhost', 'root', 'root', "urunler"); // Veritabanı bağlantısı
if ($this->db->connect_errno) die("Hata:" . $this->db->connect_error); // Bağlantı kontrolü
$this->db->set_charset('utf8'); // Türkçe karakter desteği.
}
/*
* @params : Yapılacak sorgulamaların SQL kodunu query olarak atıyor.
*/
public function sorgu($sorgu)
{
$this->sql = $this->db->query($sorgu) or die($this->db->error);
}
/*
* @params : Yeni bir değer ekleneceği için , veritabanında ki eklencek alanları parametre olarak alıyor.
*/
public function ekle($ad, $detay, $fiyat)
{
$this->sorgu("INSERT INTO test VALUES(null,'$ad','$detay','$fiyat')");
}
/*
* @params : Silinecek değeri parametre olarak alıyor. ID değeri.
*
*/
public function sil($id)
{
$this->sorgu("DELETE FROM urun WHERE id='$id'");
}
/*
* @params: Güncellenecek değerleri alıyor. ID değerinin taşıdığı değerlere atanıyor.
*/
public function guncelle($detay, $fiyat, $id)
{
$this->sorgu("UPDATE urun SET aciklama='$detay',fiyat='$fiyat' WHERE id='$id'");
}
/*
* @return : Veritabanındaki tüm değerleri döndürüyor. ( Dizi olarak alıp , foreach ile gösterebilirsiniz )
*/
public function listele()
{
if ($this->sql) {
return $this->sql->fetch_all(MYSQLI_ASSOC);
}
}
/*
* @return : HTML karakterlerinin girilmesini engelliyor. Array_map $in ile gelen değerleri , html etiketlerinden arındırıp
* nesne olarak gönderiyor.
*/
public function escape($in)
{
return array_map(array($this->db, 'real_escape_string'), $in);
}
/*
* Link etkileşim işlemleri. Bağlantı gönderilmişti. Onu kontrol ediyoruz. Ona göre işlem uyguluyoruz.
* Örneğin; silme güncelleme işlemi yapıldıktan sonra ana listeleme havuzuna geçişimiz sağlanıyor.
*/
public function redirect($url)
{
if (!headers_sent()) {
header('Location: ' . $url);
} else {
echo '<script> window.location.href="' . $url . '"; </script>';
echo '<noscript>';
echo '<meta http-equiv="refresh" content="0;url=' . $url . '" />';
echo '</noscript>';
}
}
/*
* Sınıf sonlanırken , yapılacak işlem.
*
*/
public function __destruct()
{
$this->db->close();
}
}
?>
@ozgurmert
Copy link

Hata yok aslında, sadece boş dönüyor.

Kod bloğu şu şekilde

`<?php
include_once 'class.veritabani.php';

$cek = new mySQL();

$veri = $cek->listele();

var_dump($veri);
exit;

foreach($veri as $row){

var_dump($row);
echo "<br>";

}

?>`

@ozgurmert
Copy link

hatayı "sorgu" fonksiyonu veriyormuş.

public function sorgu($sorgu){ $this->sql = $this->db->query($sorgu) or die($this->db->error); }

bu şekilde değiştirince sorgu fonksiyonu kullanılabilir oldu:

public function sorgu($sorgu){ return $this->sql = $this->db->query($sorgu); }

Hata mesaj komutu ise diğer fonksiyonlarda sorgu fonksiyonundan sonra kullanılabilir. Şu şekilde;

public function sil($id){ $this->sorgu("DELETE FROM shutter_FOTO WHERE id='$id'") or die("Hata:" . $this->db->error); }

Yapıyı tekrar düzenleyip yayınlayabilirsen güzel bir sınıf.
Emeğin için teşekkür ederim.

@ardakazanci
Copy link
Author

hatayı "sorgu" fonksiyonu veriyormuş.

public function sorgu($sorgu){ $this->sql = $this->db->query($sorgu) or die($this->db->error); }

bu şekilde değiştirince sorgu fonksiyonu kullanılabilir oldu:

public function sorgu($sorgu){ return $this->sql = $this->db->query($sorgu); }

Hata mesaj komutu ise diğer fonksiyonlarda sorgu fonksiyonundan sonra kullanılabilir. Şu şekilde;

public function sil($id){ $this->sorgu("DELETE FROM shutter_FOTO WHERE id='$id'") or die("Hata:" . $this->db->error); }

Yapıyı tekrar düzenleyip yayınlayabilirsen güzel bir sınıf.
Emeğin için teşekkür ederim.

Teşekkürler.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment