Bir diziye veritabanı satır yerleştirmek için PHP kullanarak?

1 Cevap php

Ben sadece ben bir SQL sorgusu gerçekleştirmek ve daha sonra yeni bir diziye her satırı yerleştirmek kod mümkün olacağını nasıl merak ediyorum, örneğin, bir tablo aşağıdaki gibi görünüyordu Diyelim ki:

$people= mysql_query("SELECT * FROM friends")    

Çıktı:

| ID | Name | Age |   
--1----tom----32   
--2----dan----22   
--3----pat----52   
--4----nik----32   
--5----dre----65

Nasıl şu şekilde çalışır çok boyutlu bir dizi oluşturabilirsiniz, birinci satır ikinci sütun veri $ insanları kullanarak erişilebilir olabilir [0] [1] ve beşinci satır üçüncü sütun $ insanları kullanarak erişilebilir olabilir [4] [2].

Nasıl dizinin bu tür inşa hakkında gitmek istiyorsunuz?

Maalesef bu garip bir soru ise, onun sadece ben PHP + SQL için yeni ve doğrudan veri erişmek için nasıl bilmek istiyorum. Ben sadece dil ile vâkıf küçük test komut dosyaları yazıyorum gibi performans ve hız bir sorun değildir.

1 Cevap

Eğer PEAR::DB modülü gibi, bir DB modülü kullanarak açık musunuz? Eğer öyleyse, this article by Paul Dubois PHP'nin Armut DB Modülü ile Script Yazma check out. Modül superseded olmuştur, ama bu size DB uygulamaları biraz daha gelişmiş (ve daha bir sıradanlığa) temellerini gösterecektir.

Gerçek sorunuza gelince, tüm satırlar üzerinde yineleme ve bir dizi doldurmak olabilir ...

$dsn = "mysqli://testuser:testpass@localhost/test";
$conn =& DB::connect ($dsn);
if (DB::isError ($conn)) { /* ... */ }

$result =& $conn->query ("SELECT * FROM friends");
if (DB::isError ($result)){ /* ... */ }

while ($row =& $result->fetchRow()) {
   $people[] = $row;
}
$result->free ();

Yoksa bu indekse başvurduğunuzda belli bir satır isteyen, ArrayAccess interface uygulayan bir nesne yazabilirsiniz. (Bu kod tamamen yanlış olabilir ama burada benim denemeydi)

class FriendsTable implements ArrayAccess {
    function offsetGet($key) {  
        $result =& $conn->query ("SELECT * FROM friends LIMIT $key, 1",); // careful; this is vulnerable to injection...
        if (DB::isError ($result)){ die ("SELECT failed: " . $result->getMessage () . "\n"); }
        $people = null;
        if ($row =& $result->fetchRow ()) {
           $people = $row;
        }
        $result->free ();
        return $people;
    }  

    function offsetSet($key, $value) {  
        /*...*/ 
    }  

    function offsetUnset($key) {  
        /*...*/ 
    }  

    function offsetExists($offset) {  
        /*...*/ 
    }
}

$people = new FriendsTable();
$person = $people[2]; // will theoretically return row #2, as an array

... Falan.