MySQL Saklı Prosedürlerinde PHP ile OUT
Değerlerine Erişim Rehberi
MySQL’de saklı prosedürler kullanmak, veritabanı etkileşimlerinizi önemli ölçüde artırabilir. Ancak, OUT
parametreleriyle çalışıyorsanız, bu parametrelerin değerlerini PHP ile almak zorlayıcı olabilir. Bu blog yazısında, bu OUT
parametrelerine etkili bir şekilde nasıl erişeceğimizi keşfedeceğiz ve size net bir adım adım rehber sunacağız.
Problemi Anlamak
MySQL’de bir saklı prosedür oluşturduğunuzda, giriş (IN
) ve çıkış (OUT
) parametreleri olabilir. OUT
parametreleri, saklı prosedürden çağırana değer döndürmek için tasarlanmıştır. Ne yazık ki, PHP ile MySQL saklı prosedürleri arasındaki etkileşim hakkında belgeler genellikle yetersiz kalmakta ve bu OUT
parametrelerini etkili bir şekilde almak zorlaşmaktadır.
Problemin Basitleştirilmesi
Örneğin, aşağıdaki gibi tanımlanmış bir saklı prosedürünüz varsa:
myproc(IN i int, OUT j int)
Şu soruyu sormuş olabilirsiniz: “PHP kullanarak bu prosedürden ‘j’ çıkış değerine nasıl erişebilirim?”
Çözüm: OUT
Parametrelerine Erişim
PHP’nin MySQLi uzantısını kullanarak MySQL’de bir OUT
parametresinin değerini almak için aşağıdaki adımları izleyebilirsiniz.
Adım 1: Bir Veritabanı Bağlantısı Oluşturun
Öncelikle, mysqli
sınıfını kullanarak MySQL veritabanına bağlanmanız gerekiyor. Aşağıdaki şablonu kullanın:
$mysqli = new mysqli("HOST", "USR", "PWD", "DBNAME");
HOST
, USR
, PWD
ve DBNAME
değerlerini gerçek veritabanı kimlik bilgilerinizle değiştirdiğinizden emin olun.
Adım 2: Saklı Prosedürü Çağırın
Saklı prosedürünüzü çağırırken OUT
parametresinin değerini de seçmeniz gerekecek. Bunu nasıl yapabileceğinizi aşağıda gösteriyoruz:
$ivalue = 1; // Prosedür için giriş değeri
$res = $mysqli->multi_query("CALL myproc($ivalue, @x); SELECT @x");
Bu kod parçasında:
@x
, çıkış değerini saklayacak MySQL’de tanımlı bir kullanıcı değişkenidir.
Adım 3: Sonuçları İşleyin
multi_query
ile saklı prosedür çağrısını gerçekleştirdikten sonra, sonuçları işlemek gerekecek. Bu, çağrının başarılı olup olmadığını kontrol etmeyi ve çıkış parametre değerini almayı içerir:
if ($res) {
$results = 0;
do {
if ($result = $mysqli->store_result()) {
printf("<b>Sonuç #%u</b>:<br/>", ++$results);
while ($row = $result->fetch_row()) {
foreach ($row as $cell) echo $cell, " ";
}
$result->close();
if ($mysqli->more_results()) echo "<br/>";
}
} while ($mysqli->next_result());
}
$mysqli->close();
Kodun Açıklaması:
// - Sonuçları tek tek gözden geçirmek ve almak için bir döngü kullanıyoruz.
// - store_result()
fonksiyonu, yürütülen sorgudan sonuç kümesini almak için kullanılır.
// - Sonuç kümesini işledikten sonra kapatıyoruz ve OUT
parametresini de içerebilecek daha fazla sonuç olup olmadığını kontrol ediyoruz.
// Son olarak, veritabanı bağlantısını $mysqli->close();
ile kapatıyoruz.
Sonuç
MySQL saklı prosedürlerinden PHP ile OUT
değerlerine erişmek başlangıçta zorlayıcı görünebilir, ancak yukarıdaki yöntemle bunu basit bir şekilde gerçekleştirebilirsiniz. Bu yaklaşım, bir bağlantı oluşturmayı, saklı prosedürü çağırmayı ve sonuçları dikkatlice işlemeyi içerir. Bu adım adım rehber, PHP ve MySQL saklı prosedürleriyle çalışan geliştiriciler için yararlı bir referans olmalıdır.
Bu konuda daha derinlemesine bilgilere ulaşmak veya PHP ve MySQL ile ilgili başka sorularınız varsa, blogumuzu keşfetmekten ya da aşağıda yorum bırakmaktan çekinmeyin!