<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Gökalp Kuşçu &#187; mysql store procedure</title>
	<atom:link href="http://www.gokalpkuscu.com/tag/mysql-store-procedure/feed" rel="self" type="application/rss+xml" />
	<link>http://www.gokalpkuscu.com</link>
	<description>Aquila Non Captat Muscas</description>
	<lastBuildDate>Wed, 18 Jan 2012 21:05:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>PHP ile MYSQL Store Procedure Çağrımı</title>
		<link>http://www.gokalpkuscu.com/php-ile-mysql-store-procedure-cagrimi</link>
		<comments>http://www.gokalpkuscu.com/php-ile-mysql-store-procedure-cagrimi#comments</comments>
		<pubDate>Mon, 17 Aug 2009 18:33:03 +0000</pubDate>
		<dc:creator>Gökalp Kuşçu</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[mysql store procedure]]></category>
		<category><![CDATA[php ile mysql storeprocedure]]></category>
		<category><![CDATA[php ile store procudure]]></category>
		<category><![CDATA[php ile store procudure çağrımı]]></category>
		<category><![CDATA[php mysql store procedure]]></category>
		<category><![CDATA[php store procedure]]></category>

		<guid isPermaLink="false">http://www.gokalpkuscu.com/?p=257</guid>
		<description><![CDATA[Evet arkadaşlar store procedure lafını çok duymuşsunuzdur. En çok duyduğunuz alanda ise 3 katmanlı mimari içindedir sanırım. Veri katmanını oluşturan kısım için önemli bir yapı şimdi bunu PHP ve MYSQL veri tabanı tarafından inceleyeceğiz. Bu dökümanda fazla syntax yapısına değinmeyeceğim. Bu dökümanın kapsamında MYSQL store procedure nasıl yazılır ve PHP içinde nasıl çağrılır onu göstermeye [...]]]></description>
			<content:encoded><![CDATA[<p>Evet arkadaşlar store procedure lafını çok duymuşsunuzdur. En çok duyduğunuz alanda ise 3 katmanlı mimari içindedir sanırım. Veri katmanını oluşturan kısım için önemli bir yapı şimdi bunu PHP ve  MYSQL veri tabanı tarafından inceleyeceğiz. Bu dökümanda fazla syntax yapısına değinmeyeceğim. Bu dökümanın kapsamında MYSQL store procedure nasıl yazılır ve PHP içinde nasıl çağrılır onu göstermeye çalışacağım.</p>
<p><span id="more-257"></span></p>
<blockquote><p>
   İlk olarak şunu belirtmek istiyorum, PHP ile MYSQL yapısına bağlantıyı hemen hemen herkes bilir connect ve select_db fakat kullandığım PHP sürümünde store procedure call ederken bir bug oluşuyormuş ve bendede bu bug oluştuğu için mysqli yapısını kullanacağım, mysqli yapısı hakkında bilgi almak istiyorsanız.</p>
<p>http://www.php.net/manual/en/mysqli.overview.php okumanızı tavsiye ederim. Syntax bir daha OOP dayalı. Hatta belirgin özelliklerini yazmışlar bende paylaşayım.</p>
<p>- Object-oriented interface </p>
<p>- Support for Prepared Statements </p>
<p>- Support for Multiple Statements </p>
<p>- Support for Transactions </p>
<p>- Enhanced debugging capabilities </p>
<p>- Embedded server support </p>
</blockquote>
<p>Şimdi gelelim store procedure yazımına, dbForge Studio kullanıyorum bunu belirtmek isterim. Bu işlemleri phpMyadmin sql sorgusu alanındada işleyebilirsiniz. Fakat ben daha olması için bu tip editörler kullanıyorum. phpMyadmin üzerinde yazıp çalıştırmaya kalktığınızda DELIMETER gibi isteklerde bulununabilir fakat benim editörüm bunu kendisi yapıyor. Herneyse;</p>
<p>Bu çalışma için oluşturduğum veri tabanı şu şekilde:</p>
<pre class="brush:sql">

--
-- Tablo yapısı: `tbltest`
--

CREATE TABLE IF NOT EXISTS `tbltest` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `News` text COLLATE utf8_turkish_ci,
  `NewsAuthor` varchar(50) COLLATE utf8_turkish_ci DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci AUTO_INCREMENT=2 ;

--
-- Tablo döküm verisi `tbltest`
--

INSERT INTO `tbltest` (`ID`, `News`, `NewsAuthor`) VALUES (1, 'Haber testidir.', 'gökalp');
</pre>
<p>Evet veri tabanımızı oluşturduk. Bir tablo ve 3 kolondan oluşan ID adında bir primary key taşıyan, veri tabanımızı oluşturduk ve içeri bir veri insert ettik.Şimdi gelelim procedure yazmaya. Hemen aşağıdaki kodumuzu işletelim. </p>
<pre class="brush:sql">

CREATE DEFINER = 'root'@'localhost'
PROCEDURE workspacedb.fetchDependsOnID(IN _ID INTEGER (11))
BEGIN
  SET @USING_ID = _ID;
  SELECT
    *
  FROM
    WORKSPACEDB.tbltest
  WHERE
    TBLTEST.ID = @USING_ID;
END
</pre>
<p>Benim database adım workspacedb ve oluşturacağım procedure adına fetchDependsOnID ( id&#8217;ye bağlı olarak getir ) koydum.</p>
<p><strong>IN _ID INTEGER (11) &#8211; ></strong> İçeri alınacak değerin tipini gönderiyor bir fonksiyon gibi düşünün.<br />
<strong>BEGIN</strong> procedure başlangıç <strong>END</strong> ise bitiş kısmı.<br />
<strong>SET @USING_ID = _ID; -></strong> Anlicağınız üzere IN  ile içeri alınan değişken value, içerdeki procedure değişkenine atandı.Set edildi.<br />
Sonra query ifademizi oluşturduk ve WHERE şart alanından sonra set ettiğimiz değişkeni ile şartımızı bitirdik. Temel olarak olan olay şu oldu, IN içinde gelen veri, bir int veri ve bu int değerine sahip ID&#8217;li haberi getir.</p>
<p>Şimdi gelelim PHP alanımıza,</p>
<pre class="brush:php">

< ?php

 $mysqli = mysqli_init();
 $mysqli->real_connect("localhost","root","","workspacedb");

if ($re = $mysqli->real_query("call fetchDependsOnID(1)"))
{
   if($objResult = $mysqli->store_result())
    {
        while($row = $objResult->fetch_assoc())
        {
            $arr[]=$row;
        }
 //OUT:Array ( [0] => Array ( [ID] => 1 [News] => Haber testidir. [NewsAuthor] => gökalp ) )
        print_r($arr);
        $objResult->free_result();
    }
 }

?>
</pre>
<p>Gerekli syntaxlar yukarıda <img src='http://www.gokalpkuscu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Dönüş sonuçta gördüğünüz gibi :<br />
Array ( [0] => Array ( [ID] => 1 [News] => Haber testidir. [NewsAuthor] => gökalp ) ) </p>
<p>Burda normal mysql_query(&#8220;&#8221;); gibi, fakat sql sorgusu göndermek yerine, CALL deyimi ile kendi prodecure ümüzü çağrıyoruz ve sonucun gelmesini bekliyoruz. <img src='http://www.gokalpkuscu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>İyi çalışmalar<br />
gökalp kuşçu</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gokalpkuscu.com/php-ile-mysql-store-procedure-cagrimi/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

