<?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; php tüm tablelar için ortak insert function</title>
	<atom:link href="http://www.gokalpkuscu.com/tag/php-tum-tablelar-icin-ortak-insert-function/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&#8217;de tüm tablolar için ortak insert function</title>
		<link>http://www.gokalpkuscu.com/phpde-tum-tablolar-icin-ortak-insert-function</link>
		<comments>http://www.gokalpkuscu.com/phpde-tum-tablolar-icin-ortak-insert-function#comments</comments>
		<pubDate>Thu, 14 Jan 2010 23:25:43 +0000</pubDate>
		<dc:creator>Gökalp Kuşçu</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[array_combine()]]></category>
		<category><![CDATA[array_map()]]></category>
		<category><![CDATA[mysql toplu insert]]></category>
		<category><![CDATA[ortak insert function]]></category>
		<category><![CDATA[php ortak insert function]]></category>
		<category><![CDATA[php toplu insert]]></category>
		<category><![CDATA[php tüm tablelar için ortak insert function]]></category>

		<guid isPermaLink="false">http://www.gokalpkuscu.com/?p=348</guid>
		<description><![CDATA[Merhaba arkadaşlar bugünlerde bir kod kafama çok takıldı, oluşturduğum her tabloya bilgi girişi yapacağım ve bunları her tablom için ayrı ayrı insert komutu yazacağıma güzel bir function yazıp, bu functiona da sadece table ismini ve verilerimi dizi şeklinde gönderip insert ettirmek çok mantıklı geldi. İlk olarak colonlarımı çekmeliydim sonra ise verilerimi alıp, bildiğimiz insert syntax [...]]]></description>
			<content:encoded><![CDATA[<p>Merhaba arkadaşlar bugünlerde bir kod kafama çok takıldı, oluşturduğum her tabloya bilgi girişi yapacağım ve bunları her tablom için ayrı ayrı insert komutu yazacağıma güzel bir function yazıp, bu functiona da sadece table ismini ve verilerimi dizi şeklinde gönderip insert ettirmek çok mantıklı geldi.</p>
<p>İlk olarak colonlarımı çekmeliydim sonra ise verilerimi alıp, bildiğimiz insert syntax ına dönüştürüp, query olarak işlemeliydi.</p>
<p>http://tr.php.net bu konuda çok yardımcı oldu ve şöyle bir kod yazdım&#8230;</p>
<p><span id="more-348"></span></p>
<p>Bu kod içinde bilmemiz gerekn bir kaç yapı var ilk önce onlardan bahsedeyim. </p>
<blockquote><p>
<strong>array_map()</strong> : Bu function bize dizimizi, geri döndük bir function içinde işletmemizi sağlıyor nasıl mı ? </p>
<p>$a = array(1, 2, 3, 4, 5);<br />
$b = array_map(&#8220;cube&#8221;, $a);</p>
<p>Burdaki cube ifadesi bir function şöyleki :</p>
<p> function cube($sayi)<br />
  {<br />
   return $sayi*$sayi*$sayi<br />
  }</p>
<p>array_map ilk önce bu dizi elemanlarımızı, functiona gönderiyor dönen sonucu aynen geri dizideki yerine yazıyor.</p>
<p>OUT: $b = (1,8,27,64,125 ); </p>
</blockquote>
<p>Bunu nerede kullanacağız derseniz,&#8221; mysql_escape_string &#8221; function için.</p>
<p>İkinci olarak bilmemiz gereken:</p>
<p><strong>array_combine :</strong> Bunu buradaki yazıdan öğrenebilirsiniz, <a href="http://www.gokalpkuscu.com/adding-two-array-different-array">Buradaki yazımda</a></p>
<p>Evet gerekli olan functionlarımızı öğrendik geriye PHP yeteneğimiz kaldı.</p>
<p>Benim database sınıfım içinden alınmış bir fonksiyon, yapmanız gereken tek şey fonksiyona, table adını ve değerlerinizi göndermeniz burada önemli olan diğer bir noktada gelen veri dizi ile ben mysql&#8217;deki colonları combine ettim yani gönderdiğiniz, <strong>veri sırasını colon sırası ile aynı yapmalısınız.</strong></p>
<pre class="brush:php">

public function insert_data($table,$value = array()){
   try{
     $qColumnNames = $this->query(" SHOW COLUMNS FROM $table ") or die("gok");
      $numColumns = $this->database_num_rows($qColumnNames) or die("gok");
        $x = 0;
          while ($x < $numColumns)
          {
           $colname = mysql_fetch_row($qColumnNames) or die("gok");
           $col[$x] = $colname[0];
           $x++;
          }
           $value = array_combine($col, $value);
          $sql =  sprintf('INSERT INTO %s (%s) VALUES ("%s")', $table,
                implode(', ', array_map('mysql_escape_string', array_keys($value))),
                  implode('", "',array_map('mysql_escape_string', $value)));

            echo $sql;
        }
      catch (exception $e){
      die("{$e->getMessage()}");
    }
 }

//OUT: INSERT INTO haber (id, title) VALUES ("1", "gokalp")
</pre>
<p>İşi biraz daha abartacağım sanırım aynı anda farklı tablolara insert çektirmek gibi güzel bir function olucak hızı nasıl etkiler tahmin edemiyorum test etmek gerek <img src='http://www.gokalpkuscu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.gokalpkuscu.com/phpde-tum-tablolar-icin-ortak-insert-function/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

