2013-06-12 31 views
9

PHP'ye oldukça yeni geldim ve etrafa baktım ve aradığım yanıtı bulamıyorum.SQL sonuçlarını PHP dizisine dönüştürün

Ben bu gibi, bir SQL sorgusu yapmak istiyorum:

$result = mysqli_query($connection, $command) 
if (!$result) { die("Query Failed."); } 

// Create my array here ... I'm thinking of maybe having to 
// make a class that can hold everything I need, but I dunno  

while($row = mysqli_fetch_array($result)) 
{ 
    // Put the row into an array or class here... 
} 

mysqli_close($connection); 

// return my array or class 

Temelde sonucunun tüm içeriğini almak ve ben satır olarak benzer bir şekilde erişebileceğiniz bir dizi oluşturmak istiyorum. Örneğin, 'uid' adlı bir alanım varsa bunu myData ['uid'] aracılığıyla elde edebilmeyi istiyorum. Sanırım birkaç satır olabileceğinden, belki daha çok myData [0] ['uid'], myData [1] ['uid'], vb. Gibi bir şey olabilir.

Herhangi bir yardım için teşekkür ederiz.

+0

db yapısı nedir? 4myData ['id'] = $ row ['id']; ' –

+0

gibi yapabilirsiniz. Peki ya kaç tane satır veya alanın döndürüleceğini bilmiyorum? Ayrıca, benim için verileri alabilen global bir SQL sınıfı oluşturmaya çalışıyorum, bu yüzden alanların adlarını bile bilmiyorum, böylece böyle atayamam. Şu anda Benim DB yapıdır sadece uid: int firstName: varchar (64) lastName: varchar (64) emailAddress: varchar (64) şifresi: varchar (64) –

+0

sorgu –

cevap

17

Sen yapabilirsiniz:

$rows = []; 
while($row = mysqli_fetch_array($result)) 
{ 
    $rows[] = $row; 
} 
+0

Bu işe yaramıyor. Ben sadece denedim ve sonra bir eko ($ satır [0] ['uid']) yaptı ve hiçbir şey var ... –

+1

echo sözdizimi doğru mu? echo $ satırları [0] ['uid']; ' – karthikr

+0

evet tam olarak benim echo oldu –

5

Sen diziler için mysqli_result::fetch_all() kullanmayı deneyebilir:

$result = mysqli_query($connection, $command) 

if (!$result) { die("Query Failed."); } 

$array = $result->fetch_all(); 

$result->free(); 

mysqli_close($connection); 

NOT: Bu yalnızca MySQLND ile çalışır.

$result = mysqli_query($connection, $command) 

if (!$result) { die("Query Failed."); } 

while($model = $result->fetch_assoc()){ 
    // Assuming ModelClass is declared 
    // And have method push() to append rows. 
    ModelClass::push($model); 
} 

$result->free(); 

mysqli_close($connection); 

VEYA bu:


sınıf için böyle bir şey kullanmayı deneyebilir

// Base Model - abstract model class. 
class ModelClass extends BaseModel { 

    // constructor 
    public function __construct(mysqli &$dbms){ 
     // $this->dbms is MySQLi connection instance. 
     $this->dbms = &$dbms; 

     // $this->models is buffer for resultset. 
     $this->models = array(); 
    } 

    // destructor 
    public function __destruct(){ 
     unset($this->dbms, $this->models); 
    } 

    public function read(){    
     $result = $this->dbms->query($command); 

     if($this->dbms->errno){ 
      throw new Exception($this->dbms->error, $this->dbms->errno); 
     } 

     $this->models = $result->fetch_all(); 

     $result->free(); 
    } 
} 
+0

bu döngüden daha iyi olurdu :) +1 –

+0

@ NullPoiиteя maalesef, Linux ile uyumlu değil. En son kullandığım zaman yaktım. – BlitZ

+0

nereye sadece windows os ile çalışacağını söyledikleri belgeleri verirdiniz, çünkü sadece afaik linux ile çalışması gerekir ... :) –

1
//object oriented style mysqli 
//connect to your db 
$mysqli = new mysqli("host", "user", "password", "dbname"); 
$result = $mysqli->query("SELECT * FROM `table`"); 

//use mysqli->affected_rows 
for ($x = 1; $x <= $mysqli->affected_rows; $x++) { 
    $rows[] = $result->fetch_assoc(); 
} 

//this will return a nested array 
echo "<pre>"; 
print_r($rows); 
echo "</pre>"; 

düzenlemek, bu ve bir sınıf ve adil çağrı üzerine koydu Veritabanınızla bir sorgu yapacağınız her zaman.

İlgili konular