Gökalp Kuşçu

Mezun olduuuuu :)

Php’de tüm tablolar için ortak insert function

with 5 comments

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 ına dönüştürüp, query olarak işlemeliydi.

http://tr.php.net bu konuda çok yardımcı oldu ve şöyle bir kod yazdım…

Bu kod içinde bilmemiz gerekn bir kaç yapı var ilk önce onlardan bahsedeyim.

array_map() : Bu function bize dizimizi, geri döndük bir function içinde işletmemizi sağlıyor nasıl mı ?

$a = array(1, 2, 3, 4, 5);
$b = array_map(“cube”, $a);

Burdaki cube ifadesi bir function şöyleki :

function cube($sayi)
{
return $sayi*$sayi*$sayi
}

array_map ilk önce bu dizi elemanlarımızı, functiona gönderiyor dönen sonucu aynen geri dizideki yerine yazıyor.

OUT: $b = (1,8,27,64,125 );

Bunu nerede kullanacağız derseniz,” mysql_escape_string ” function için.

İkinci olarak bilmemiz gereken:

array_combine : Bunu buradaki yazıdan öğrenebilirsiniz, Buradaki yazımda

Evet gerekli olan functionlarımızı öğrendik geriye PHP yeteneğimiz kaldı.

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’deki colonları combine ettim yani gönderdiğiniz, veri sırasını colon sırası ile aynı yapmalısınız.


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")

İş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 :)

5 Responses to 'Php’de tüm tablolar için ortak insert function'

Subscribe to comments with RSS or TrackBack to 'Php’de tüm tablolar için ortak insert function'.

  1. kanka yine dellenmişssin sanırım :D

    yücel

    20 Oca 10 at

  2. anladigim kadariyla tablo ismini verince ilgili kolonlari bulup her birine istedigin verileri ekliyor yanilmiyorum degil mi gokalp?

    hc0de

    5 Şub 10 at

  3. evet aynen öyle çalışıyor :)

    Gökalp Kuşçu

    10 Şub 10 at

  4. array_map benim aşık oldugum bir fonksiyon gercekten cok seviyorum onu :)

    0xyGen

    12 Şub 10 at

  5. Çok Güzel Bir teknik Saol

    murat

    17 Şub 10 at

bir yorum yaz:

statik ip java.awt.event öss php 3 katmanlı mimari mysql drop table Macgyver info Transformers 2: Revenge Of The Fallen öss 2009 cevapları int arrayIndex write to txt with c# java oracle connection string dinle kibo Java Enterprise php türkçe karakter Cyberplatform PHP OOP jenny iphone çin uygur devleti soykırımı WriteAllLines() php drop table php quiz sonucu hüseyin kara net limitsiz tarife hlds b0f LOREENA MCKENNITT - ALL SOULS NIGHT php ile etiket yapımı No listening sockets site update php mysql phpTürkçe karakter sorunu kişisel proje pardus 2009 download tom hanks maven goals etiket Java mave pardus 2009 Macgyver php quiz kpss 2009 yazılım grubu staj başladı php interface kpss linux pardus metallica dinle Gary Serda gökalp site güncelleme kpss sınavı java.lang Lee David Zlotoff java oracle sorgu metallica izle b0f sunucu update php nesne lider olma loreena mckenitt billions of pages in google hanks half life dedicated server buffer overflow object destination nesneye dayalı php ttnet statik ip gökalp kuşçu doğum günü saubm php nesneye dayalı programlama Transformers 2: Yenilenlerin İntikamı saubm.com java oracle bağlantısı java ve oracle array_combine() javax.swing.event Cyberplatform.net javadoc php mysql drop table Shia LaBeouf pardus gökalp koca adam olmuş php nesneye dayalı programla transformers 2 Macgyver 1982 öss 2009 soruları ve cevapları apple google operating system apache shutting down for Apache proje uzay mekiği 6 oscar dhcp C# gump kpss 2009 yorumu javadoc:aggregate php veri tabanı soykırım öss 2009 ttnet dhcp grup çin soykırımı open source university hüs Richard Dean Anderson toyota staj Kişisel Mevzu half life buffer overflow php veri tabanı bağlantısı Chrome OS oscar repository LOREENA MCKENNITT - ALL SOULS NIGHT dinle google chrome OS forrest gump steve metallica nothing else matters Items.CopyTo bilgisayar kulubü Java Staj php parent toyota javafoc maven plugin Macgyver bilgi hlds buffer overflow coding muhabbeti java.util php object oriented programlama php class php türkçe karakter Converter java.net osum yazılım donanım grubu Onur Aktaş Mysql php etiket php ile tag sistemi yapımı etiket yapımı java ile oracle sorgu çekme steve Jops LOREENA MCKENNITT - ALL SOULS NIGHT izle transformers takım arkadaşı wamp No listening sockets OOP maven 2 Türk ttnet 8 MB string[] java.text Endeavour uzay mekiği OS staj metallica Onur javadoc:javadoc projec men php tr converter loreena pardus rc2 import java.sql.* string path PHP oracle sorgu string content[] php ile veri tabanından veri çekme nothing else matters 8 megabit tag me google google Chrome System.IO.File.WriteAllLines import oracle.jdbc.pool.OracleDataSource maven plugin uygur Türkleri Cyberplatform.org web etiket liderlik web tag forrest gump 1994 javax.swing ttnet tarife öss 2009 soruları koder muhabbet Endeavour dedicated server buffer overflow google Liderliğin on emri forrest buffer over flow oracle Gökalp Kuşçu ben gökalp java.io google OS CopyTo() pardus download php ile tag