<?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>Yusuf KOÇ &#187; MySQL</title>
	<atom:link href="http://www.ysfkc.com/category/mysql/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ysfkc.com</link>
	<description>Php Günlüğü</description>
	<lastBuildDate>Fri, 23 Jul 2010 16:39:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Php&#8217;nin Mysql Data Seek Fonksiyon Kullanımı</title>
		<link>http://www.ysfkc.com/php/phpnin-mysql-data-seek-fonksiyon-kullanimi.html</link>
		<comments>http://www.ysfkc.com/php/phpnin-mysql-data-seek-fonksiyon-kullanimi.html#comments</comments>
		<pubDate>Tue, 25 Nov 2008 23:33:46 +0000</pubDate>
		<dc:creator>Raiden</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[data seek]]></category>
		<category><![CDATA[mysqli]]></category>
		<category><![CDATA[mysql_data_seek]]></category>

		<guid isPermaLink="false">http://www.ysfkc.com/?p=111</guid>
		<description><![CDATA[Merhabalar bu sefer de çok oldun artık sen yusuf der gibisiniz ya da ben öyle hissediyorum .  Geçenler de ceviz.net&#8216; te bir kullanıcımız bir sql sorgusu ile sayfanın farklı farklı yerlerinde yeniden kullanmak istediğini ancak sql sorgusunu sadece bir kere kullanıp while ile döngüye girip alabildiğinden yakınmıştı. Aslında tam olarak yapmak istediği şey bir sql [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="Php" src="http://www.ysfkc.com/dosyalar/konuresimleri/php.jpg" alt="" width="100" height="50" /> Merhabalar bu sefer de çok oldun artık sen yusuf der gibisiniz ya da ben öyle hissediyorum <img src='http://www.ysfkc.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .  Geçenler de <a href="http://forum.ceviz.net" target="_blank">ceviz.net</a>&#8216; te bir kullanıcımız bir sql sorgusu ile sayfanın farklı farklı yerlerinde yeniden kullanmak istediğini ancak sql sorgusunu sadece bir kere kullanıp while ile döngüye girip alabildiğinden yakınmıştı. Aslında tam olarak yapmak istediği şey bir sql sorgusu ile dönen sonuçları sayfanın farklı farklı yerlerinde aynı sorguyu tekrarlamadan yazdırmaktı.</p>
<p><span id="more-111"></span></p>
<p>Kullanıcının bu dediğini yapamamamızın nedeni ise sql sorgusu yapıldığında imlecin sonuna gitmesidir böyle olunca da aynı sorguyu başa almadığımız için farklı farklı yerlerde yeniden kullanamamaktayız. İşte burada bize yardıma php &#8216;nin mysql ve mysqli fonksiyonlarından mysql_data_seek() ve mysqli_data_seek() fonksiyonları yetişmekte. İsterseniz birer örnekle konumuzu detaylandıralım. Öncelikle bir veritabanı oluşturduğunuzu varsayarak aşağıya bir sql kodlarını veriyorum.</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> data_seek_test_tablo<span style="color: #66cc66;">&#40;</span>
id int<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">11</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">UNSIGNED</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">AUTO_INCREMENT</span> <span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span><span style="color: #66cc66;">,</span>
ad varchar<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">50</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
soyad varchar<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">50</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>
<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> data_seek_test_tablo<span style="color: #66cc66;">&#40;</span>ad<span style="color: #66cc66;">,</span>soyad<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'yusuf'</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">'koç'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> data_seek_test_tablo<span style="color: #66cc66;">&#40;</span>ad<span style="color: #66cc66;">,</span>soyad<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'akın'</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">'yorulmaz'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> data_seek_test_tablo<span style="color: #66cc66;">&#40;</span>ad<span style="color: #66cc66;">,</span>soyad<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'ersin'</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">'ölmez'</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>yukarıdaki sql satırlarını phpmyadmin veya türevi bir arayüz ile veritabanınızda tablo ve bilgileri eklediğinizi varsayıyorum.</p>
<p>Şimdi gelelim tek sorgu yaptık ve bunu farklı farklı yerlerde kullanmaya&#8230; Şimdi öncelikle bir genel sorgumuzu yapalım</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #990000;">mysql_connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'locahost'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'root'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">mysql_error</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">mysql_select_db</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'veritabani_adi'</span><span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">mysql_error</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT * FROM data_seek_test_tablo&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$rows</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$rows</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'id'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' '</span><span style="color: #339933;">.</span><span style="color: #000088;">$rows</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'ad'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' '</span><span style="color: #339933;">.</span><span style="color: #000088;">$rows</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'soyad'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;br /&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">yusuf koç
akın yorulmaz
ersin ölmez</pre></div></div>

<p>üstteki betik bize tanımladığımız tablodaki tüm verileri listeleyip işlemini tamamlayacaktır. Fakat sayfanın alt kısımlarında ikinci bir while ile tekrar verileri yazdırmak istediğimiz de hata alacağızdır.  Onun için imleci tekrar başa almak gerekiyor bunu da mysql_data_seek() ile yapıyoruz.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #990000;">mysql_connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'locahost'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'root'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">mysql_error</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">mysql_select_db</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'veritabani_adi'</span><span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">mysql_error</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT * FROM data_seek_test_tablo&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$rows</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$rows</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'id'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' '</span><span style="color: #339933;">.</span><span style="color: #000088;">$rows</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'ad'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' '</span><span style="color: #339933;">.</span><span style="color: #000088;">$rows</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'soyad'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;br /&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #990000;">mysql_data_seek</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$rows</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$rows</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'id'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' '</span><span style="color: #339933;">.</span><span style="color: #000088;">$rows</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'ad'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' '</span><span style="color: #339933;">.</span><span style="color: #000088;">$rows</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'soyad'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;br /&gt;;
}
?&gt;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">yusuf koç
akın yorulmaz
ersin ölmez
yusuf koç
akın yorulmaz
ersin ölmez</pre></div></div>

<p>bu betik çalıştırıldığında ise göreceksiniz ki tek $query sorgusu ile iki adet while kullandık bunun sonucunda iki kere aynı kayıtları bastığını göreceksiniz.</p>
<p>Bunun yanında mysql_data_seek() fonksiyonundaki 0 ( sıfır ) imleci sorgunun başına alır. 0 yerine örneğin 1 derseniz tablodaki ikinci kayıttan itibaren listelemeye başlar. Bunu da anlamamız için bir örnek yapalım.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #990000;">mysql_connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'locahost'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'root'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">mysql_error</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">mysql_select_db</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'veritabani_adi'</span><span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">mysql_error</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT * FROM data_seek_test_tablo&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$rows</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$rows</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'id'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' '</span><span style="color: #339933;">.</span><span style="color: #000088;">$rows</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'ad'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' '</span><span style="color: #339933;">.</span><span style="color: #000088;">$rows</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'soyad'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;br /&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #990000;">mysql_data_seek</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$rows</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$rows</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'id'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' '</span><span style="color: #339933;">.</span><span style="color: #000088;">$rows</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'ad'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' '</span><span style="color: #339933;">.</span><span style="color: #000088;">$rows</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'soyad'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;br /&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">yusuf koç
akın yorulmaz
ersin ölmez
akın yorulmaz
ersin ölmez</pre></div></div>

<p>Bunda da göreceksiniz ki &#8220;yusuf koç&#8221; ikinci while dikkate alınmadı çünkü imlec ikinci kaydın başına getirildi.</p>
<p>Sabırla okuduğunuz için saolun var olun <img src='http://www.ysfkc.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ysfkc.com/php/phpnin-mysql-data-seek-fonksiyon-kullanimi.html/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Php ile sonraki konu bilgileri alınması.</title>
		<link>http://www.ysfkc.com/php/php-ile-sonraki-konu-bilgileri-alinmasi.html</link>
		<comments>http://www.ysfkc.com/php/php-ile-sonraki-konu-bilgileri-alinmasi.html#comments</comments>
		<pubDate>Tue, 08 Jul 2008 20:30:57 +0000</pubDate>
		<dc:creator>Raiden</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[sonraki konu]]></category>

		<guid isPermaLink="false">http://www.ysfkc.com/?p=27</guid>
		<description><![CDATA[Bazen yazdığımız betikler de önceki konu sonraki konu yapmamız gerekebiliyor. Aslında çok basit lakin bazen çok çalışmaktan insan gözü önündeki hatayı bile göremez hale gelmekte. Aslında mantık olarak gelen ID değerini bir artırıp veritabanını sorgulayıp değeri alıp yazdırmak her ne kadar basit bir çözümmüş gibi görünse de unutulan bir şey oluyor. ID auto_increment özelliğini aldığında [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="float: left;" src="http://www.ysfkc.com/dosyalar/konuresimleri/php.jpg" alt="" width="100" height="50" />Bazen yazdığımız betikler de önceki konu sonraki konu yapmamız gerekebiliyor. Aslında çok basit lakin bazen çok çalışmaktan insan gözü önündeki hatayı bile göremez hale gelmekte. Aslında mantık olarak gelen ID değerini bir artırıp veritabanını sorgulayıp değeri alıp yazdırmak her ne kadar basit bir çözümmüş gibi görünse de unutulan bir şey oluyor. ID auto_increment özelliğini aldığında her veri girişinde bildiğimiz gibi değer bir artırılıyor bunun yanında veri sildiğimiz de olmakta işte bu noktada sıralı rakamlar arasında boşluk oluşmakta ve az önceki söylediğim ID değerini bir artırmak bu noktada çuvallıyor  çünkü kendisinden sonraki numara veritabanından silindiyse sorgu sonucu bize false olarak dönecektir.</p>
<p><span id="more-27"></span></p>
<p>O yüzden sql sorgumuzu aşağıdaki gibi değiştirirsek bunun önüne geçebiliriz.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">SELECT <span style="color: #339933;">*</span> FROM tablo WHERE id <span style="color: #339933;">&gt;</span> <span style="color: #990000;">intval</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'id'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> LIMIT <span style="color: #cc66cc;">1</span></pre></div></div>

<p>bu sorgu da yapılmak istenenleri açıklayalım. SELECT ile tablodaki tüm alanları ( field ) seçtik. Ardından WHERE ile koşulumuzu belirttik yani tablodaki ID alanının urlden gelen ID degerinden büyük olanları koşul olarak belirtip LIMIT ifadesi ile dönen bütün kayıtlardan sadece ilkini aldık.</p>
<p>Önceki konu için ise  sql cümlemizi aşağıdaki gibi değiştirmemiz yeterli olacaktır.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">SELECT <span style="color: #339933;">*</span> FROM tablo WHERE id <span style="color: #339933;">&lt;</span> <span style="color: #990000;">intval</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'id'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> LIMIT <span style="color: #cc66cc;">1</span></pre></div></div>

<p>intval() fonksiyonu ise kendisine verilen string in type kontrolunu yapar eğer verilen string numeric değil ise sonucu 0 a eşitler.</p>
<p>Ufak bir örnek vermek gerekirse
</pre>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$sayi</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">12</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #990000;">intval</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sayi</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// sonuc 12</span>
&nbsp;
<span style="color: #000088;">$sayi</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;a1as2dsf2&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #990000;">intval</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sayi</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// sonuc 0</span></pre></div></div>

<p>örneklerde  de görüldüğü gibi bu fonksiyon yardımı ile sql injectionların önüne bi nebze olsun geçmiş de oluyoruz.</p>
<p>Evet işte bu kadar yazının başında da dediğim gibi insan göz önündeki şeyi bazen görmekte zorlanıyor haksız mıyım ? <img src='http://www.ysfkc.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>iyi çalışmalar</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ysfkc.com/php/php-ile-sonraki-konu-bilgileri-alinmasi.html/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Mysql Stored Procedure Kullanımı</title>
		<link>http://www.ysfkc.com/mysql/mysql-stored-procedure-kullanimi.html</link>
		<comments>http://www.ysfkc.com/mysql/mysql-stored-procedure-kullanimi.html#comments</comments>
		<pubDate>Fri, 23 May 2008 21:01:18 +0000</pubDate>
		<dc:creator>Raiden</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[procedure]]></category>
		<category><![CDATA[stored procedure]]></category>
		<category><![CDATA[strored]]></category>

		<guid isPermaLink="false">http://www.ysfkc.com/?p=8</guid>
		<description><![CDATA[Bu yazım da sizlere Mysql in stored procedure olayından bahsedeceğim. Nedir bu stored procedure denilen şey diye düşünüyor olabilirsiniz hemen açıklıyayım bellekte saklanmış prosedürler yani sql sorguları diyebiliriz. Uygulamalarımız da kullandığımız sql cümleleri her defasında yeniden derlenir ve bize sonucu döndürürler. Peki stored procedur un ne farkı var ? Bu özellik MySQL 5+ versiyonundan itibarenden [...]]]></description>
			<content:encoded><![CDATA[<p>Bu yazım da sizlere Mysql in stored procedure olayından bahsedeceğim. Nedir bu stored procedure denilen şey diye düşünüyor olabilirsiniz hemen açıklıyayım bellekte saklanmış prosedürler yani sql sorguları diyebiliriz.</p>
<p>Uygulamalarımız da kullandığımız sql cümleleri her defasında yeniden derlenir ve bize sonucu döndürürler. Peki stored procedur un ne farkı var ?</p>
<p><span id="more-8"></span></p>
<p>Bu özellik MySQL 5+ versiyonundan itibarenden geçerlidir.</p>
<p>Stored Procedure ile çok sık kullandığımız sql cümlelerimizi mysql e bir kere giriyoruz ve ilk defaya mahsus derleniyor. Sonrasın da ise oluşturduğumuz stored procedur u kullandığımız da sql cümlelerimiz yeniden derlenmiyor direk bize sonucu veriyor.</p>
<p>Bu özelliği daha çok büyük çaplı projelerde, online hit i yüksek sitelerimiz de kullanabiliriz. Küçük uygulamalar için kullanmak biraz hamallık olur düşüncesindeyim.</p>
<p>Örnek bir Stored Procedure oluşturalım ve ilgili tablomuz ile nasıl kullanabiliriz ona bakalım.</p>
<p><strong>Tablo Adı:</strong><br />
Yazar<br />
id : int<br />
ad: varchar<br />
soyad: varchar<br />
yas: int</p>
<p>Evet yukarıdaki gibi bir tablo elde ettik. Şimdi bu tablo ile neler yapmak istiyoruz onu belirlemeliyiz. Ben bu tablo ile 3 işlem yapmak istiyorum.</p>
<p>1.cisi Yazar var mı yok mu kontrol etmek</p>
<p>2.cisi Yazar id si ile ilgili yazar bilgilerini çekmek</p>
<p>3.cüsü Verilen yazar id sine göre ilgili yazarı silmek.</p>
<p>Bu üç işlemi yapan örnek stored procedurümüz aşağıdadır.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">DELIMITER $$
&nbsp;
DROP PROCEDURE <span style="color: #b1b100;">IF</span> EXISTS `test`<span style="color: #339933;">.</span>`yazar_islem` $$
CREATE DEFINER <span style="color: #339933;">=</span> `root`<span style="color: #339933;">@</span>`localhost` PROCEDURE `test`<span style="color: #339933;">.</span>`yazar_islem` <span style="color: #009900;">&#40;</span>in yazarid int<span style="color: #339933;">,</span> in islem int<span style="color: #009900;">&#41;</span>
BEGIN
<span style="color: #b1b100;">CASE</span> islem
WHEN <span style="color: #cc66cc;">1</span> THEN SELECT id FROM yazar WHERE id <span style="color: #339933;">=</span> yazarid<span style="color: #339933;">;</span>
WHEN <span style="color: #cc66cc;">2</span> THEN SELECT ad<span style="color: #339933;">,</span>soyad<span style="color: #339933;">,</span>yas FROM yazar WHERE id <span style="color: #339933;">=</span> yazarid<span style="color: #339933;">;</span>
WHEN <span style="color: #cc66cc;">3</span> THEN DELETE FROM yazar WHERE id <span style="color: #339933;">=</span> yazarid<span style="color: #339933;">;</span>
<span style="color: #b1b100;">ELSE</span> SELECT <span style="color: #0000ff;">'Hatali İslem'</span><span style="color: #339933;">;</span>
<span style="color: #990000;">END</span> <span style="color: #b1b100;">CASE</span><span style="color: #339933;">;</span>
<span style="color: #990000;">END</span> $$
&nbsp;
DELIMITER <span style="color: #339933;">;</span></pre></div></div>

<p>yukarıda daha önceden yapmak istediğimiz işlemleri yapacak olan prosedürümüzü tanımladık. şimdi bu prosedürü .sql uzantılı bir dosyaya kaydedip  veritabanınıza yüklediğiniz de prosedürümüz oluşmuş olcak.</p>
<p>Şimdi gelelim bu satırlar neyi ifade ediyor. Satır Satır Açıklayalım.</p>
<p><strong>DELIMITER $$   $$ DELIMITER<br />
</strong></p>
<p>bu ifade bir veri kümesini başlangıç ve sonunu işaretlemek için kullanılır.</p>
<p><strong>DROP PROCEDURE IF EXISTS `test`.`yazar_islem` $$</strong></p>
<p>bu satırda ise eğer <strong>test </strong>veritabanında <strong>yazar_islem</strong> adında bir prosedür daha önceden tanımlanmış ise bunu kaldırıyor.</p>
<p><strong> CREATE DEFINER = `root`@`localhost` PROCEDURE `test`.`yazar_islem` (in yazarid int, in islem int)</strong></p>
<p>bu satırda ise se <strong>CREATE</strong> tümcesi ile prosedür oluşturuluyor. <strong>DEFINER </strong>tümcesi ile oluşturulan prosedürün hangi kullanıcının kullanıma sahip olduğunu tanımlıyor. <strong>PROCEDURE </strong>tümcesi ile oluşturacağımız prosedürün adını veriyoruz.</p>
<p>Buraya kadar herşey tamam ama peki <strong>in yazarid int</strong> ve <strong>in islem int </strong>da ne oluyor ?  Buradaki <strong>in </strong>oluşan prosedüre bir argüman girileceği ve bu belirtilen argümünın da veri tipinin int olacağı söyleniyor. Aynısı islem içinde geçerli.</p>
<p>3 değişik argüman alıyor. Bunlar;</p>
<p>in       : veri girişi için kullanılıyor<br />
out     : veri çıkışı için kullanılıyor<br />
inout  : hem veri girişi hem de veri çıkışı için kullanılıyor.</p>
<p><strong>BEGIN</strong> ve <strong>END</strong></p>
<p>biz oluşturacağımız prosedür sql cümlelerini bu iki tümce arasında belirteceğiz.</p>
<p><strong>CASE islem</strong></p>
<p>satırı ile islem argümanın alacağı değeri <strong>WHEN</strong> ile kontrol edip ilgili işlemi döndüreceğiz. Yani <strong>islem</strong> değeri 2 ise bize yazar bilgilerini çekicek 3 ise silecek vb.</p>
<p><strong>ELSE SELECT</strong></p>
<p>satırı ile herhangi bir islem seçimi yapılmamışsa uyarı vericek.</p>
<p><strong>END CASE</strong></p>
<p>ile prosedürümüzü oluşturan cümleyi sonlandırıyoruz.</p>
<p>Oluşturulan bu Stored Procedure yi nasıl kullanacağız ?  Bunun için phpmyadmin arayüzünü kullanabilirsiniz veya mysql komut satırından da faydalanabilirsiniz.</p>
<p>Ben komut satırını kullanarak örnek vereceğim. Öncelik Mysql Komut Satırını Açınız. Sizden şifre isteycektir eğer istemez se <strong>mysql -u root </strong>komutunu girin ve Şifre kısmına mysql bağlantı şifrenizi yazın ve enterleyin.</p>
<p>daha sonra stored procedur u hangi veritabanı için oluşturduysanız o veritabanına</p>
<p><strong>use veritabani_adi;<br />
</strong></p>
<p>komutunu vererek geçiş yapınız.</p>
<p>Son olarak oluşturduğumuz proceduru çağırmak için aşağıdaki komutu veriniz.</p>
<p><strong>call yazar_islem(1,2);</strong></p>
<p>evet bunun sonucunda size id si 1 olan yazarın bilgilerini getirecektir. 2 yerine 3 derseniz o yazarı silecektir.</p>
<p>Örneğimiz le ilgili resim:</p>
<p><img src="http://www.ysfkc.com/dosyalar/sp_raiden.png" alt="Stored Procedure" width="683" height="430" /></p>
<p>görüldüğü üzere işlem sonucumuz da yazar tablosunda bulunan <strong>YUSUF KOÇ </strong>adlı yazar bilgilerini getirdi.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ysfkc.com/mysql/mysql-stored-procedure-kullanimi.html/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
