Stored Procedure PHP İle Kullanımı Hakkında
-
sql sorgusu: select * from kullanicilar, yetkiler where yetkiler.kullanici_id = kullanicilar.kullanici_id
böyle bir sorgumuz var diyelim. bunu store procedure olarak yazdık direk bu şekilde. sonra bunu php içerisinde
call kullanicilar();
olarak çağırdık. fakat şuanda elimde olan yukarıdaki sorgu. ben bu sorguda php ile şu değişikliği yapmak istiyorum,
select * from kullanicilar, dersler where dersler.kullanici_id = kullanicilar.kullanici_id
bunu nasıl yaparım hocam ?birde şöyle bir örneğimiz var diyelim,
CREATE PROCEDURE naber(IN gelen VARCHAR(10), OUT giden VARCHAR(30))
BEGIN
IF(gelen = "iyi") THEN
SET giden = "Güzel.";
ELSEIF(gelen =“kötü“) THEN
SET giden = "Neden kötüsü.";
ELSE
SET giden=“Ne dedin?“;
END IF;
END //mesela php de
if ($i>10) echo "büyük"; else echo "küçük";
mesela bunda olay basit. $i nin büyük olup olmadığına bakıyor ve ben bu değişkenin değerini değiştirerek sonucu değiştiririm. fakat mysql de sorguyla sonucu değiştirme olayı nasıl olacak ?teşekkürler
-
upp.. hocalar yarına anlatıcam bu konuyu okulda. yardım lütfen :S
-
hocam yapmaya çalıştığın şeyi anlamadım açıkcası. ama iki sorgunda da sorun var. ilk sorgunda o şekil kullanmak yerine inner join kullanman daha kullanışlı olur. aynı işi yapıyor zaten. inner join left join right join gibi kullanımlar var, 2. sorgundaki de tamamen yanlış ki yapmaya çalıştığın şey zannediyorum ikisi eşitse sonucu döndür demek. o işi de inner join yapıyor. sonuç olarak iki sorgun da aynı yere gidiyor. :)
-
Usta bunu bu şekilde kullanırsan hocadan 0'ı alırsın :select * from kullanicilar, yetkiler where yetkiler.kullanici_id = kullanicilar.kullanici_id
Doğrusu bu olacak : select * from kullanicilar inner join yetkiler on kullanicilar.kullanici_id = yetkiler.kullanici_id
Demek istediğine gelince onu ben de anlamadım. Php'den anlamam ama prosedürden cevapları dataset olarak alırsın. Yani prosedüründe 2 tane ayrı select sorgusu çekersen 2 ayrı tablo alırsın. İşini görür sanırım.
-
Buremba bunu yazdı:
-----------------------------
hocam yapmaya çalıştığın şeyi anlamadım açıkcası. ama iki sorgunda da sorun var. ilk sorgunda o şekil kullanmak yerine inner join kullanman daha kullanışlı olur. aynı işi yapıyor zaten. inner join left join right join gibi kullanımlar var, 2. sorgundaki de tamamen yanlış ki yapmaya çalıştığın şey zannediyorum ikisi eşitse sonucu döndür demek. o işi de inner join yapıyor. sonuç olarak iki sorgun da aynı yere gidiyor. :)
-----------------------------hocam adam ne sormus sen ne anlatmisim :), bide ha inner joinle yapmisin ha oyle yapmisin ayni sorgusunda hicbir sorun yok
-
yav hocalar cevabımı alamadım ya :S
benim yapmak istediğim sql sorgusuyla yazdığım if yapısının sonucunu php ile değiştirmek vede php ile oluşturmuş olduğum procedure sorgusunu değiştirmek istiyorum.
-
anladığım kadarıyla dışardan verigirişi yapacan sonrasındada yaptırmak istedigin işlemi yaptıracan.Bunun için bir değişken tanımlarsın gelen degeri okutursun. Ben php bilmiyorum ama mantık aynıdır googleden hemen baktım 2.sonuca tıkladım ve karşıma şöyle bir kod blogu geldi bak incele bir işini görecektir umarım
<?php /* Store Procedure veritabanı bağlantısı */ $baglanti = mysqli_connect('localhost','kullaniciadi','sifre','veritabaniadinizı'); if (!$baglanti) { printf("Can't connect to MySQL Server. Errorcode: %s\n", mysqli_connect_error()); exit; } $result = mysqli_query($baglanti, "call kisigetir('".$addegiskeni."','".$soyaddegiskeni."','".$yasdegiskeni."')") ; // call kisigetir ile prosedurü çağırıyoruz ve parametreleri veriyoruz. while( $row = mysqli_fetch_array($result) ){ echo ($row[0]."<br>"); } mysqli_free_result($result); // Sorgu sonucu hafızadan temizleniyor mysqli_next_result($baglanti); // bir sonraki result değeri için bağlantıyı serbest bırakıyoruz $result = mysqli_query($baglanti, "call kisigetir('".$addegiskeni."','".$soyaddegiskeni."','".$yasdegiskeni."')") ; // call kisigetir ile prosedurü çağırıyoruz ve parametreleri veriyoruz. while( $row = mysqli_fetch_array($result) ){ echo ($row[0]."<br>"); } ?> -
stored procudere yi inceleyeceğim.
çizik atıyorum
