2013-02-01 52 views
0

你好我想存儲的MySQL結果成爲一個全球性陣列商店的MySQL結果在關聯數組

class db 
{ 
function CustomLoad($table_name,$Fields) 
    { 
    global $_MYSQL_DATA; 

    $_MYSQL_DATA=array(); 

    $qry = mysql_query("SELECT * FROM $table_name") or die(mysql_error()); 
    while($row = mysql_fetch_assoc($qry)) 
    { 
     foreach($Fields as $r=>$key) 
     { 

     $_MYSQL_DATA[$r] = $row[$r]; 
     } 

    } 

    } 
} 

我打電話這樣

$dbObj = new db(); 
$fields = array("FIELD_1"=>"FIELD 1","FIELD_2"=>"FIELD 2","FIELD_3"=>"FIELD 3","FIELD_4"=>"FIELD 4"); 
$dbObj->CustomLoad("registrations",$fields); 

print_r($_MYSQL_DATA); 

問題是,我只得到最後的結果。像Array ([FIELD_1] => A [FIELD_2] => B [FIELD_3] => C [FIELD_4]=> D)

+4

您應該避免使用'mysql_ *'函數,因爲它們已被棄用。改用PDO或'mysqli_ *'函數。 –

回答

3

只需使用以下命令:

$_MYSQL_DATA = array(); // you should declare your variables, even if it's not mandatory 
while($row = mysql_fetch_assoc($qry)) // USE PDO or MySQLi !!!!! 
{ 
    $_MYSQL_DATA[] = $row; 
} 

注意

[]操作產生最小的,積極的,數字是不是你的陣列中使用的關鍵。

例子:

$array = array(0 => 'b', 1 => 'a'); 
$array[] = 'c'; // will place it in $array[2] 

$array = array(); 
$array[] = 'a'; // will place in $array[0] 

現在 ...關於PDO /庫MySQLi的咆哮(因爲我說了吧:P)。

MySQL自PHP 5.5起正式棄用,不再維護。您應該考慮將您的代碼移植到MySQLi或PDO。

+0

這個答案更簡單,應該和raheel shan一樣認爲回答 – Dharman

+0

這很好,謝謝Vlad Preda .. :-) – Rakesh

+0

不客氣。你也應該從http://php.net隨機開始閱讀,你會發現很多有趣的東西。 –

1

在foreach中應該有$ row not $ Field。同時運行計數器

$i=0;  
while($row = mysql_fetch_assoc($qry)) 
{ 
    foreach($row as $r=>$key) 
    { 
     $_MYSQL_DATA[$i][$r] = $key; 
    } 
    $i++; 
}