2013-06-12 155 views
9

我是相當新的PHP和我一直在四處張望,似乎無法找到我要找的具體的答案。轉換SQL結果到PHP數組

我想要做一個SQL查詢,像這樣:

$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 

基本上我想拍攝效果的全部內容,並創建我可以以類似的方式訪問作爲該行的數組。例如,如果我有一個名爲'uid'的字段,我希望能夠通過myData ['uid']獲取該字段。我想可能會有好幾行,也許更像myData [0] ['uid'],myData [1] ['uid']等。

任何幫助,將不勝感激。

+0

你是什麼db結構...?你可以像'4myData ['id'] = $ row ['id'];' –

+0

但是如果我不知道將返回多少行或字段會怎樣?我也試圖創建一個可以爲我檢索數據的全局SQL類,所以我甚至不知道這些字段的名稱,所以我不能這樣指定。 我的數據庫結構,現在只是 UID:整數 姓:VARCHAR(64) 名字:VARCHAR(64) EMAILADDRESS:VARCHAR(64) 密碼:VARCHAR(64) –

+0

您可以在查詢 –

回答

17

你可以這樣做:

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

這不起作用。我只是試圖,然後做了一個回聲($ rows [0] ['uid'])並沒有得到任何東西... –

+1

回聲句法正確嗎? 'echo $ rows [0] ['uid'];' – karthikr

+0

是的,這正是我的回聲 –

5

你可以嘗試使用mysqli_result::fetch_all()數組:

$result = mysqli_query($connection, $command) 

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

$array = $result->fetch_all(); 

$result->free(); 

mysqli_close($connection); 

注:這隻對MySQLND


對於類,你可以嘗試使用這樣的:

$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); 

OR這樣的:

// 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

那會更好,然後使用循環:) +1 –

+0

@NullPoiиteя不幸的是,它不適合Linux。上次我燒了,當時我正在使用它。 – BlitZ

+0

你會給他們說的文件,這將只適用於Windows操作系統,因爲它應該與Linux一起工作...... :) –

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

編輯這一點,並把它放在一個類裏調用它隨時可以用你的數據庫進行查詢。