mysql结果检索列名和值

时间:2012-08-14 16:23:21

标签: php mysql

我正在尝试创建一个将mysql查询结果转换为数组

的函数

在下面的函数中,我假设有字段isbn, title and rank,但情况并非总是如此。

有没有办法在不事先知道任何此类信息的情况下检索字段名称和值?这样这个函数可以用于任何mysql查询结果。

功能

function mysqlToArray($result){

   $arr = array();
   $numRows = mysql_num_rows($result);//count
   if($numRows>0){
      for($i=0; $i<$numRows; $i++){
         $arr[] = array(
            "isbn"      => mysql_result($result, $i, "isbn"),
            "title"     => mysql_result($result, $i, "title"),
            "rank"      => mysql_result($result, $i, "rank"),                   
         );
      }
   }        

   return $arr;
}

使用中的示例

function getProfitableBooks(){
    $q = "SELECT isbn, title, rank FROM ".TBL_BOOKS;

    $result = mysql_query($q, $this->connection);
    if(!$result || (mysql_numrows($result) < 1)){  
        return null;
    }
    return $this->mysqlToArray($result);
}

4 个答案:

答案 0 :(得分:2)

尝试查看此mysql_fetch_array

答案 1 :(得分:1)

这个mysql_fetch_array

有一个很棒的PHP函数

你可以view examples mysql_fetch_array in the PHP manual

答案 2 :(得分:1)

尝试这样的方法来获取cols的名称。

my $table = 'name';
my $sth = $dbh->prepare("SELECT * FROM $table WHERE 1=0;");
$sth->execute;
my @cols = @{$sth->{NAME}}; # or NAME_lc if needed
$sth->finish;
foreach ( @cols ) {
    printf( "Note: col : %s\n", $_ );
}

答案 3 :(得分:1)

您检查了PHP manual吗?

mysql_fetch_assoc会在这里提供帮助:

function mysqlToArray($result)
{
   $arr = array();
   while($arr[] = mysql_fetch_assoc($result));

   return $arr;
}