2013-02-01 22 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++; 
}