FPDF/PHP:未使用 Mysqli_fetch_fields() 检索列名
FPDF/PHP: Column names not retrieved with Mysqli_fetch_fields()
所以我有一个关于 FPDF 库的问题,该库用于生成包含来自 MYSQL-DB 的数据的 PDF 文档。
在 PHP 5 中,所有代码都正常运行,我得到以下输出:
我使用此代码生成它:
<?php
require('mysql_table.php');
class PDF extends PDF_MySQL_Table
{
function Header()
{
$this->SetFont('Arial','',18);
$this->Cell(0,6,'test',0,1,'C');
$this->Ln(10);
//Ensure table header is output
parent::Header();
}
}
//Connect to database
mysql_connect('localhost','root','');
mysql_select_db('testDB');
$pdf=new PDF();
$pdf->AddPage();
$prop=array('HeaderColor'=>array(255,150,100),
'color1'=>array(210,245,255),
'color2'=>array(255,255,210),
'padding'=>2);
$pdf->Table('SELECT `first_name`, `last_name`, `title` FROM a3324_userWHERE DELETED = 0 order by `date_entered`',$prop);
header('Content-type: test/pdf');
$pdf->Output('test'.".pdf", 'D');
?>
当我试图在我的 Linux 服务器上实现同样的目标时,它提醒我应该使用 mysqli_*,因为 PHP 不支持旧版本 7.
我已经用它们的 mysqli-variant 替换了所有函数并得到以下结果:
如您所见,除了不从数据库中检索列名外,它可以正常工作。我做了一些研究并注意到检索列名的旧函数如下:
foreach($this->aCols as $i=>$col)
{
if($col['c']=='')
{
if(is_string($col['f']))
$this->aCols[$i]['c']=ucfirst($col['f']);
else
$this->aCols[$i]['c']=ucfirst(mysql_field_name($res,$col['f']));
}
}
因为需要用到mysqli,发现函数mysql_field_name()
不用了,被mysqli_fetch_field()
或mysqli_fetch_fields()
代替了。
我曾尝试用 mysqli_fetch_fields($res,$col['f'])
或 mysqli_fetch_field()
替换 mysql_field_name($res,$col['f'])
但这也不起作用。
我的问题出在哪里?
尝试:
foreach($this->aCols as $i=>$col)
{
if($col['c']=='')
{
if(is_string($col['f']))
$this->aCols[$i]['c']=ucfirst($col['f']);
else
$this->aCols[$i]['c']=ucfirst(mysqli_fetch_field_direct($res, $col['f'])->name);
}
}
或使用:
function mysqli_field_name($res, $fieldnr) {
$finfo = mysqli_fetch_field_direct($res, $fieldnr);
return is_object($finfo) ? $finfo->name : false;
}
所以我有一个关于 FPDF 库的问题,该库用于生成包含来自 MYSQL-DB 的数据的 PDF 文档。
在 PHP 5 中,所有代码都正常运行,我得到以下输出:
我使用此代码生成它:
<?php
require('mysql_table.php');
class PDF extends PDF_MySQL_Table
{
function Header()
{
$this->SetFont('Arial','',18);
$this->Cell(0,6,'test',0,1,'C');
$this->Ln(10);
//Ensure table header is output
parent::Header();
}
}
//Connect to database
mysql_connect('localhost','root','');
mysql_select_db('testDB');
$pdf=new PDF();
$pdf->AddPage();
$prop=array('HeaderColor'=>array(255,150,100),
'color1'=>array(210,245,255),
'color2'=>array(255,255,210),
'padding'=>2);
$pdf->Table('SELECT `first_name`, `last_name`, `title` FROM a3324_userWHERE DELETED = 0 order by `date_entered`',$prop);
header('Content-type: test/pdf');
$pdf->Output('test'.".pdf", 'D');
?>
当我试图在我的 Linux 服务器上实现同样的目标时,它提醒我应该使用 mysqli_*,因为 PHP 不支持旧版本 7.
我已经用它们的 mysqli-variant 替换了所有函数并得到以下结果:
如您所见,除了不从数据库中检索列名外,它可以正常工作。我做了一些研究并注意到检索列名的旧函数如下:
foreach($this->aCols as $i=>$col)
{
if($col['c']=='')
{
if(is_string($col['f']))
$this->aCols[$i]['c']=ucfirst($col['f']);
else
$this->aCols[$i]['c']=ucfirst(mysql_field_name($res,$col['f']));
}
}
因为需要用到mysqli,发现函数mysql_field_name()
不用了,被mysqli_fetch_field()
或mysqli_fetch_fields()
代替了。
我曾尝试用 mysqli_fetch_fields($res,$col['f'])
或 mysqli_fetch_field()
替换 mysql_field_name($res,$col['f'])
但这也不起作用。
我的问题出在哪里?
尝试:
foreach($this->aCols as $i=>$col)
{
if($col['c']=='')
{
if(is_string($col['f']))
$this->aCols[$i]['c']=ucfirst($col['f']);
else
$this->aCols[$i]['c']=ucfirst(mysqli_fetch_field_direct($res, $col['f'])->name);
}
}
或使用:
function mysqli_field_name($res, $fieldnr) {
$finfo = mysqli_fetch_field_direct($res, $fieldnr);
return is_object($finfo) ? $finfo->name : false;
}