lostyazilim
tr.link

PHP PDO Kullanımı Hakkında Yardım Gerek

11 Mesajlar 3.213 Okunma
acebozum
tr.link

4531 4531 WM Aracı Anonim Üyelik
  • Üyelik 13.03.2012
  • Yaş/Cinsiyet - /
  • Meslek
  • Konum
  • Ad Soyad ** **
  • Mesajlar 996
  • Beğeniler 210 / 211
  • Ticaret 3, (%100)
Merhaba arkadaşlar, nerede okuduysam yavaş yavaş PDO'ya geçme zamanımın geldiğini düşünmeye başladım ve bu yüzden bugün bir bakayım dedim. Ancak bağlantı yapmayı başardığım halde mysql veritabanından veri çekemedim.

Önceden aşağıda ki kodlar ile işlerimi halleder veriyi çekerdim.


$veri = mysql_connect("localhost","root","") or die("Ana bilgisayar bağlantısı başarısızdır.");
$baglanti = mysql_select_db("db",$veri) or die("Veritabanı bağlantısı başarısızdır.");
?>
//----- Fonksiyon 3
function ornek(){
$cek = mysql_query("Select id, adres, site_adres from ayarlar");
$veri = mysql_fetch_assoc($cek);
echo $veri["site_adres"]."/".$veri["adres"];
}
?>

Ancak şimdi aynı şekilde bu veri çekme işlemini PDO ile yapmaya çalışıyorum fakat bir türlü düzgün anlatım bulamadım. Yardımlarınızı bekliyorum.
 

 

elektronikssl
webimgo

KarakayaEmre KarakayaEmre WM Aracı Kullanıcı
  • Üyelik 13.09.2012
  • Yaş/Cinsiyet 30 / E
  • Meslek Mühendis
  • Konum Mersin
  • Ad Soyad E** K**
  • Mesajlar 526
  • Beğeniler 146 / 145
  • Ticaret 0, (%0)
En çok beğendiğim bir ders vardı.Tayfun erbilen anlatmıştı.Normal mysql ile pdo arasındaki kod farklıklarını anlatıyordu.Hatta linkinide veriyim.

http://www.prototurk.com/video/mysql_-vs-pdo/394

Buradaki dersi incelerseniz sizin kodlamanız aşağıdaki gibi olmalı

try {
$db = new PDO("mysql:host=localhost;dbname=test;charset=utf8", "root", "123456");
} catch ( PDOException $e ){
print $e->getMessage();
}
?>
//----- Fonksiyon 3
function ornek(){
$cek = mysql_query("Select id, adres, site_adres from ayarlar");
$query = $db->query("Select id, adres, site_adres from ayarlar", PDO::FETCH_ASSOC);
if ( $query->rowCount() ){
foreach( $query as $row ){
print $row['kulanici_adi']."
";
}
}
}
?>
 

 

http://www.emrekarakaya.com.tr/

alabacaknet alabacaknet Developer Kullanıcı
  • Üyelik 14.09.2012
  • Yaş/Cinsiyet 39 / E
  • Meslek Yazılım geliştirme
  • Konum Ankara
  • Ad Soyad M** A**
  • Mesajlar 217
  • Beğeniler 55 / 48
  • Ticaret 0, (%0)
Mantık basit. Sınıfı başlatıyorsun, sonra sınıf üzerinde işlem yapıyorsun. Fonksiyonlar birbirinden bağımsızken, PDO birbirine bağımlı fonksiyonlardan oluşuyor.

mysql_xxx(query) yerine $pdo->xxx(query) diyorsun oluyor bitiyor.

Kodunu çevireyim ben, ama döküman için google'da arama yaparsan "pdo kullanımı", "pdo örnekleri" falan filan daha genişini bulursun

try {
// IP bazlı sunucular daha hızlı çalışıyor diye duymuştum :(
$pdo = new PDO("mysql:host=127.0.0.1;dbname=db" /* DSN */, "root" /* ad */, "" /* şifre */);
} catch(PDOException $e) {
// HATA YAZDIR
echo $e->getMessage();
}
?>
//----- Fonksiyon 3
function ornek(){
// küresel olarak bağlanmıştık, onu çağırıyorum
global $pdo;

// bu ? işareti çok önemli, direk olarak $id değişkeni şeklinde sorguya yazmadım bak mesela
// bu bir güvenlik önlemidir, çok basit bir mantık ama çok büyük güvenlik

# prepare ile soruguyu "pdo'ya" gönderiyoruz, ama sorgu yapmıyoruz
$sorgu = $pdo->prepare("SELECT id, adres, site_adres FROM ayarlar WHERE id = :id");

# sonra id = :id kısımdaki ":id" işaretini bir veriyle değiştiriyorum
# 1 numarayı oraya yerleştiriyorum, PDO::PARAM_INT diyerek de "tam sayı" olduğunu belirttim
# daha fazla PARAM_* için: http://www.php.net/manual/en/pdo.constants.php
# konu adresi için: http://www.php.net/manual/en/book.pdo.php
$sorgu->bindValue(":id", 1, PDO::PARAM_INT);

// Her şey hazır ve sorguyu yapıyorum
$sorgu->execute();

// Şimdi verileri alabilirim, çünkü veritabanıyla işim bitti,
# fetch "tekli sonuç", PDO::FETCH_ASSOC ise mysql_fetch_assoc'daki assoc; Array döndürüyor
$sonuc = $sorgu->fetch( PDO::FETCH_ASSOC );

echo $sonuc->site_adres . "/" . $sonuc->adres;
}
?>
 

 

Murat Alabacak <http://muratalabacak.net>

4531 4531 WM Aracı Anonim Üyelik
  • Üyelik 13.03.2012
  • Yaş/Cinsiyet - /
  • Meslek
  • Konum
  • Ad Soyad ** **
  • Mesajlar 996
  • Beğeniler 210 / 211
  • Ticaret 3, (%100)

KarakayaEmre adlı üyeden alıntı

En çok beğendiğim bir ders vardı.Tayfun erbilen anlatmıştı.Normal mysql ile pdo arasındaki kod farklıklarını anlatıyordu.Hatta linkinide veriyim.

http://www.prototurk.com/video/mysql_-vs-pdo/394

Buradaki dersi incelerseniz sizin kodlamanız aşağıdaki gibi olmalı




alabacaknet adlı üyeden alıntı

Mantık basit. Sınıfı başlatıyorsun, sonra sınıf üzerinde işlem yapıyorsun. Fonksiyonlar birbirinden bağımsızken, PDO birbirine bağımlı fonksiyonlardan oluşuyor.

mysql_xxx(query) yerine $pdo->xxx(query) diyorsun oluyor bitiyor.

Kodunu çevireyim ben, ama döküman için google'da arama yaparsan "pdo kullanımı", "pdo örnekleri" falan filan daha genişini bulursun

İkinize de çok teşekkür ederim. Haklısınız basit ancak işte ilk anda insan biraz zorlanıyor. Ne de olsa mysql_query() yaza yaza alıştık. Umarım kısa sürede öğrenirim. :)

Bu arada sizce PDO mu MySQLi mi?

 

 

wmaraci
wmaraci

alabacaknet alabacaknet Developer Kullanıcı
  • Üyelik 14.09.2012
  • Yaş/Cinsiyet 39 / E
  • Meslek Yazılım geliştirme
  • Konum Ankara
  • Ad Soyad M** A**
  • Mesajlar 217
  • Beğeniler 55 / 48
  • Ticaret 0, (%0)

ahmettalut adlı üyeden alıntı

İkinize de çok teşekkür ederim. Haklısınız basit ancak işte ilk anda insan biraz zorlanıyor. Ne de olsa mysql_query() yaza yaza alıştık. Umarım kısa sürede öğrenirim. :)

Bu arada sizce PDO mu MySQLi mi?



Veritabanına hunharca yüklenen büyük çapta bir websitesine sahipsen zaten kendi veritabanı sınıfını yazıyorsun, bu sınıfta da mysqli veya PDO kullanıyorsun bana sorarsan yine PDO kullanırım; ama mysqli sanırım çok ama çok ufak dozda önüne geçiyor PDO'nun.

Ama denildiği gibi(denilmiyor aslında böyle bir şey de:D) PDO bir filse, mysqli bir karınca. Aynı işlevi aynı hızla yapamazlar.
 

 

Murat Alabacak <http://muratalabacak.net>

4531 4531 WM Aracı Anonim Üyelik
  • Üyelik 13.03.2012
  • Yaş/Cinsiyet - /
  • Meslek
  • Konum
  • Ad Soyad ** **
  • Mesajlar 996
  • Beğeniler 210 / 211
  • Ticaret 3, (%100)

alabacaknet adlı üyeden alıntı

Veritabanına hunharca yüklenen büyük çapta bir websitesine sahipsen zaten kendi veritabanı sınıfını yazıyorsun, bu sınıfta da mysqli veya PDO kullanıyorsun bana sorarsan yine PDO kullanırım; ama mysqli sanırım çok ama çok ufak dozda önüne geçiyor PDO'nun.

Ama denildiği gibi(denilmiyor aslında böyle bir şey de:D) PDO bir filse, mysqli bir karınca. Aynı işlevi aynı hızla yapamazlar.

Cevabınız için teşekkürler. Öyle aşırı yükleme yapan bir site olmayacak yani daha çok firma scripti yapıyla uğraşıyorum şimdi PDO bana daha sıcak geliyor sql inj. korumalı. 12 farklı veritabanı ile kullanılabiliyor olması çok iyi. Bu arada son sorum olacak bu sanırım kodunuzu yazıp bağlanmaya çalıştığımda hata alıyorum.

Notice: Trying to get property of non-object in E:\Localhost\htdocs\ornek\deneme.php on line 27

Normal de veriyi şu şekilde çekebilmiştim az önce; Ancak bir türlü fonksiyon yapımını başaramadım.

try {
$db = new PDO("mysql:host=localhost;dbname=test;charset=utf8", "root", "");
} catch ( PDOException $e ){
print $e->getMessage();
}
?>

$row = $db->query('SELECT * FROM ayarlar WHERE id = 1')->fetch();
echo $row['site_adres'];
?>
 

 

Ertug Ertug WM Aracı Kullanıcı
  • Üyelik 21.09.2013
  • Yaş/Cinsiyet 34 / E
  • Meslek Yazılım geliştiricisi
  • Konum Ankara
  • Ad Soyad E** K**
  • Mesajlar 361
  • Beğeniler 51 / 43
  • Ticaret 0, (%0)
PHPR ( Türkçe PHP eğitim sitesi ) sitesinde PDO ile ilgili yalın bir anlatım var. Bakmanızı öneririm.
 

 

[freenodeIRC]
PHP = #laravelTurkiye
C++ = #qtTurkiye
Python = #pythonium

4531 4531 WM Aracı Anonim Üyelik
  • Üyelik 13.03.2012
  • Yaş/Cinsiyet - /
  • Meslek
  • Konum
  • Ad Soyad ** **
  • Mesajlar 996
  • Beğeniler 210 / 211
  • Ticaret 3, (%100)

Ertug adlı üyeden alıntı

PHPR ( Türkçe PHP eğitim sitesi ) sitesinde PDO ile ilgili yalın bir anlatım var. Bakmanızı öneririm.

Baktım ancak işte az önceki cevabımda olduğu gibi normal de basit şekilde veriyi çekebiliyorum ancak işin içine fonksiyon girince işler bozuluyor.
 

 

Ertug Ertug WM Aracı Kullanıcı
  • Üyelik 21.09.2013
  • Yaş/Cinsiyet 34 / E
  • Meslek Yazılım geliştiricisi
  • Konum Ankara
  • Ad Soyad E** K**
  • Mesajlar 361
  • Beğeniler 51 / 43
  • Ticaret 0, (%0)

ahmettalut adlı üyeden alıntı

Baktım ancak işte az önceki cevabımda olduğu gibi normal de basit şekilde veriyi çekebiliyorum ancak işin içine fonksiyon girince işler bozuluyor.



$row = $db->query('SELECT * FROM ayarlar WHERE id = 1')->fetch();

gibi kodları şöyle yazmanızı tavsiye ederim:

$sql = "SELECT * FROM ayarlar WHERE id = 1";
$row = $db -> prepare($sql);
$row -> execute();

if($row -> rowCount() > 0) {
$f = $row -> fetch();
}
 

 

[freenodeIRC]
PHP = #laravelTurkiye
C++ = #qtTurkiye
Python = #pythonium

4531 4531 WM Aracı Anonim Üyelik
  • Üyelik 13.03.2012
  • Yaş/Cinsiyet - /
  • Meslek
  • Konum
  • Ad Soyad ** **
  • Mesajlar 996
  • Beğeniler 210 / 211
  • Ticaret 3, (%100)

Ertug adlı üyeden alıntı

[code]
$row = $db->query('SELECT * FROM ayarlar WHERE id = 1')->fetch();

Başardım :D Tüm arkadaşlara teşekkür ederim.


try {
$pdo = new PDO("mysql:host=127.0.0.1;dbname=db" /* DSN */, "root" /* ad */, "" /* şifre */);
} catch(PDOException $e) {
echo $e->getMessage();
}
?>




function ornek(){
global $pdo;

$sql = "SELECT * FROM ayarlar WHERE id = 1";
$row = $pdo -> prepare($sql);
$row -> execute();

if($row -> rowCount() > 0) {
$f = $row -> fetch();
echo $f['site_adres'];
}
}
ornek();
?>


 

 

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al