SORU
30 Aralık 2009, ÇARŞAMBA


Dizi PHP MySQL Kaydet

Tek bir mysql alan veri dizisi kaydetmek için iyi bir yolu nedir?

Ayrıca mysql tabloda bu dizi için sorgu sonra, tekrar dizi haline almak için iyi bir yolu nedir?

Seri hale getirmek ve cevap unserialize?

CEVAP
30 Aralık 2009, ÇARŞAMBA


Yokiyiyolu, tek bir alana bir dizi depolamak için.

İlişkisel veri inceleyin ve şemaya uygun değişiklikleri yapmanız gerekir. Örnekte, bu yaklaşım için bir başvuru için bkz.

Eğergerekirserialize() unserialize() fonksiyonları hile yapacak tek bir alana dizi kaydedin. Ancak gerçek içeriği üzerinde sorgulama yapmak.

Seri hale getirme işlevi için bir alternatif olarak da json_encode() json_decode() var.

Şu dizi düşünün

$a = array(
    1 => array(
        'a' => 1,
        'b' => 2,
        'c' => 3
    ),
    2 => array(
        'a' => 1,
        'b' => 2,
        'c' => 3
    ),
);

Onu kurtarmak için veritabanında böyle bir tablo oluşturmanız gerekir

$c = mysql_connect($server, $username, $password);
mysql_select_db('test');
$r = mysql_query(
    'DROP TABLE IF EXISTS test');
$r = mysql_query(
    'CREATE TABLE test (
      id INTEGER UNSIGNED NOT NULL,
      a INTEGER UNSIGNED NOT NULL,
      b INTEGER UNSIGNED NOT NULL,
      c INTEGER UNSIGNED NOT NULL,
      PRIMARY KEY (id)
    )');

Bu gibi sorgular gerçekleştirebilirsiniz kayıtları (ve evet bu bir örnektir, dikkat!) ile çalışmak

function getTest() {
    $ret = array();
    $c = connect();
    $query = 'SELECT * FROM test';
    $r = mysql_query($query,$c);
    while ($o = mysql_fetch_array($r,MYSQL_ASSOC)) {
        $ret[array_shift($o)] = $o;
    }
    mysql_close($c);
    return $ret;
}
function putTest($t) {
    $c = connect();
    foreach ($t as $k => $v) {
        $query = "INSERT INTO test (id,".
                implode(',',array_keys($v)).
                ") VALUES ($k,".
                implode(',',$v).
            ")";
        $r = mysql_query($query,$c);
    }
    mysql_close($c);
}

putTest($a);
$b = getTest();

connect() fonksiyon mysql bağlantı kaynak döner

function connect() {
    $c = mysql_connect($server, $username, $password);
    mysql_select_db('test');
    return $c;
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Flohoo

    Flohoo

    12 EYLÜL 2009
  • Jeremy Gallman

    Jeremy Gallm

    11 NİSAN 2012
  • TROPFEST

    TROPFEST

    27 Mart 2007