Arama butonu
Bu konudaki kullanıcılar: 1 misafir
28
Cevap
561
Tıklama
0
Öne Çıkarma
Cevap: (GÜVENLİK'le ilgili)LİNKE TIKLANDIĞINDA GİDEN SAYFAYA DEĞİŞKEN GÖNDERMEK İLE İLGİLİ (2. sayfa)
R
9 yıl (491 mesaj)
Yüzbaşı
Konu Sahibi

Bunları yapmıştım zatende yinede sizin verdiğiniz kodları tekrar kopyala yapıştır yaptım. Bu sefer hatalar 2 iken 1 e düştü. Hata mesajı şu şekilde
Fatal error: Call to a member function fetch() on a non-object in C:\wamp\www\yavuzmustafa\index.php on line 86



86.Satırda şu kod var : $query = $pdo->query("SELECT * FROM tablosimi WHERE yaziaktif='1' ORDER BY yaziid DESC LIMIT 0,3'")->fetch(PDO::FETCH_ASSOC);

Şüphelendiğim yer şurası acaba yanlış bişey varmı bu aşağıdaki kodlarda?
$query = $pdo->query("SELECT * FROM yazilar WHERE yaziaktif='1' ORDER BY yaziid DESC LIMIT 0,3'")->fetch(PDO::FETCH_ASSOC);
if ( $query ){
print_r($query);

}





< Bu mesaj bu kişi tarafından değiştirildi reto -- 12 Aralık 2016; 15:28:32 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Ephésus
E
9 yıl (1951 mesaj)
Yüzbaşı

$query = $pdo->query("SELECT * FROM yazilar WHERE yaziaktif='1' ORDER BY yaziid DESC LIMIT 0,3'");
$query = $query->fetch(PDO::FETCH_ASSOC);


yapınca düzelmesi gerek. Fetch etmek yerine foreach ile iterate etmek daha mantıklı.

$query = $pdo->query("SELECT * FROM yazilar WHERE yaziaktif='1' ORDER BY yaziid DESC LIMIT 0,3'")

foreach($query as $row)
{
echo $row["id"];
..
..
}





< Bu mesaj bu kişi tarafından değiştirildi Ephésus -- 12 Aralık 2016; 15:38:22 >


Bu mesajda bahsedilenler: @reto
R
9 yıl (491 mesaj)
Yüzbaşı
Konu Sahibi

Malesef :(. Başka bir hata mesajı geldi bu seferde. Şu şekilde :
Parse error: syntax error, unexpected 'foreach' (T_FOREACH) in C:\wamp\www\yavuzmustafa\index.php on line 88

88.satırda şu var: foreach($query as $row)


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Ephésus
E
9 yıl (1951 mesaj)
Yüzbaşı

Bi üst satırın sonunda ; koymayı unutmuşum muhtemelen ondan kaynaklı.





< Bu mesaj bu kişi tarafından değiştirildi Ephésus -- 12 Aralık 2016; 15:40:59 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @reto
R
9 yıl (491 mesaj)
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: Ephésus

Bi üst satırın sonunda ; koymayı unutmuşum muhtemelen ondan kaynaklı.

Evet ; koyunca bu seferde başka hataLAR çıktı . Off off :/

< Resime gitmek için tıklayın >


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Ephésus
R
9 yıl (491 mesaj)
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: reto


quote:

Orijinalden alıntı: Ephésus

Bi üst satırın sonunda ; koymayı unutmuşum muhtemelen ondan kaynaklı.

Evet ; koyunca bu seferde başka hataLAR çıktı . Off off :/

< Resime gitmek için tıklayın >

Sorunları phpr.org sitesinde gösterilen biçimde hem vt 'na bağlantı hemde listeleme komutlarını aldım ve uyguladım sorunu çözdüm. Uğraşınız için teşekkürler. İlerde bi hata ile karşılaşırsam tekrar sizleri rahatsız etmek isterim.





Bu mesajda bahsedilenler: @NEFRIT , @Ephésus , @voenetto
R
9 yıl (491 mesaj)
Yüzbaşı
Konu Sahibi

Pdo ile ilgili bazı şeyleri artık kavradım sanırım. Yalnız halen araştırdığım halde bi türlü çözümünü bulamadığım bir olay yaşıyorum. İstediğim şey şu şekilde :
quote:


$gelenid = $_GET['yaziid'];
foreach($db->query("SELECT * FROM yazilar WHERE yaziid='$gelenid'") as $row) {
$yaziicerik = $row['yaziIcerik'];
}

Yukarıda çok basit bi şekilde kullanıcının tıkladığı verinin id'sini alarak ona o veriyi listeleyebiliyorum. Fakat bu şekilde bir kullanım sql Injection açığına sebebiyet veriyor. Benim istediğim ise sql Injection açığına sebebiyet vermeden aynı zamanda da istediğim veriyi
quote:

$yaziicerik = $row['yaziIcerik'];

şeklinde yazıp çekebilmek.
quote:


$query = $db->prepare("SELECT * FROM yazilar WHERE yaziId=? && yaziAktif='1'");
$query->execute(array($_GET['yaziid']));

Bu şekilde sql Injection açığına izin vermemiş oluyorum ama bu yapının içinde istediğim veriyi nasıl çekebilirim onu bilemiyorum.

Yani istediğim şey bi yandan açığı kapatıp bi yandan da istediğim veriyi alabilmek.Açığı kapatırsam istediğim veriyi nasıl çekecem bilemiyorum. Yok açığı kapatmaz isem istediğim veriyi
quote:

$yaziicerik = $row['yaziIcerik'];

şekilde çekebiliyorum ama bu seferde açık vermiş oluyorum.
Yukarıda aslında ikisinide yazdım ama ayrı ayrılar. Bunları birleştirmem lazım veya millet nasıl yapıyor?





< Bu mesaj bu kişi tarafından değiştirildi reto -- 12 Aralık 2016; 20:47:4 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @NEFRIT , @Ephésus , @voenetto
E
9 yıl (1951 mesaj)
Yüzbaşı


$gelenid = $_GET['yaziid'];
$query = $db->prepare("SELECT * FROM yazilar WHERE yaziid=?");
$query->execute(array($gelenid));
foreach($query as $row) {
$yaziicerik = $row['yaziIcerik'];
}


veya


$gelenid = (int)$_GET['yaziid'];
foreach($db->query("SELECT * FROM yazilar WHERE yaziid='$gelenid'") as $row) {
$yaziicerik = $row['yaziIcerik'];
}





< Bu mesaj bu kişi tarafından değiştirildi Ephésus -- 12 Aralık 2016; 21:43:30 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @reto
R
9 yıl (491 mesaj)
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: Ephésus

 
$gelenid = $_GET['yaziid'];
$query = $db->prepare("SELECT * FROM yazilar WHERE yaziid=?");
$query->execute(array($gelenid));
foreach($query as $row) {
$yaziicerik = $row['yaziIcerik'];
}


veya

 
$gelenid = (int)$_GET['yaziid'];
foreach($db->query("SELECT * FROM yazilar WHERE yaziid='$gelenid'") as $row) {
$yaziicerik = $row['yaziIcerik'];
}


Adamsın; ilk firsatta deneyecem. Bu arada eğitim felan veriyormusun kendin videolu olarak?





< Bu mesaj bu kişi tarafından değiştirildi reto -- 12 Aralık 2016; 23:59:38 >

< Bu ileti mobil sürüm kullanılarak atıldı >

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.