0

您好我正在尝试将 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

2 回答 2

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。

于 2013-02-01T12:42:26.843 回答
1

在 foreach 中应该有 $row 而不是 $Field。还经营一个柜台

$i=0;       
while($row = mysql_fetch_assoc($qry))
{
    foreach($row as $r=>$key)
    {
        $_MYSQL_DATA[$i][$r] = $key;
    }
    $i++;
}
于 2013-02-01T12:40:28.267 回答