2015-10-08 31 views
1

我在這一塊上敲了敲頭。PHP/MySQL - 將查詢存儲到多維數組中

實際上,我用這種方式編碼了相同的算法。 但不幸的是,我不知怎麼忘了。這是一個類似我所需要的代碼。

$result=mysql_query("select * from mydata order by 'id'")or die('died'); 
$num_fields = mysql_num_fields($result); 
$j=0; 
$x=1; 
while($row=mysql_fetch_array($result)){ 
    for($j=0;$j<$num_fields;$j++){ 
     $name = mysql_field_name($result, $j); 
     $object[$x][$name]=$row[$name]; 
    }$x++; 
} 

最後,使用這個,我可以訪問我的查詢結果是這樣的。

$ result = array;

for($row = 1; $row < count($object); $row++){ 
    $result[$row]['name of my field]; 
} 

我目前的挑戰是使用OOP而不是程序在MySQLi中編寫代碼。

我確實希望有人能幫忙。

+0

謝謝,當我獲得時間時,我將學習PDO。 –

回答

0

每當你發現自己頭撞腦後,這意味着你正在以一種非常可怕和不方便的方式做一些基本的任務。

這是你必須使用舊的MySQL驅動程序的代碼。

$object = array(); 
$result = mysql_query("select * from mydata order by id"); 
while($row = mysql_fetch_assoc($result)){ 
    $object[] = $row; 
} 

並且使用mysqli重寫它沒有問題。

但是,而不是使用OOP中的MySQLi編碼,你必須使用OOP在PDO它的代碼:

$object = $pdo->query("select * from mydata order by id")->fetchAll(); 
0

我得到它的工作。

我覺得我得分享它。

function QueryToArray($result){ 
     $fields = array(); 
     $resultset = array(); 
     $x = 1; 
     $y = 1; 

     while ($property = mysqli_fetch_field($result)) { 
      $fields[$x] = $property->name; 
      $x++; 
     } 

     while($rows = mysqli_fetch_array($result)){ 
      for($x = 1; $x <= count($fields); $x++){ 
       $fieldname = $fields[$x]; 
      $resultset[$y][$fieldname] = $rows[$fieldname]; 
      } 
      $y++; 
     }    
     return $resultset; 
    } 

所以,這是我的功能(我知道我仍然可以使它更清潔)。

有了這個,所有我得到代碼,每當我查詢我的表是這樣的。

$result = $this->QueryToArray($result); 

for($x = 1; $x <= count($result); $x++){ 
    echo $result[$x]['Name']; 
    echo " - " . $result[$x]['Description'] . "<br>"; 
    /* $result[row number][field name] */ 
} 

我讓我的生活更輕鬆,我可以更輕鬆地進行分頁。

雖然它不是純粹的面向對象,但它的工作。