我在通过 php 脚本以 pdf 文档的形式显示 mysql 数据库中的数据时遇到问题。我已经做对了,但是当我运行输出时,我的数据库中的列标题没有显示。此外,我的表格似乎被截断了一半。有人可以帮助我选择正确的维度来显示完整的表记录吗?谢谢。
这是我在 php 页面上以 pdf 格式输出数据的代码
$db_handle = new DBController();
$result = $db_handle->runQuery('select p.*, s.sname as state_name,
l.lname as lga_name from pat_reg p INNER join lga l on p.lga_id =
l.lga_id INNER join states s on p.state_id = s.state_id');
$header = $db_handle->runQuery('select p.*, s.sname as state_name,
l.lname as lga_name from pat_reg p INNER join lga l on p.lga_id = l.lga_id
INNER join states s on p.state_id = s.state_id');
require('fpdf.php');
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',11);
foreach($header as $heading) {
foreach($heading as $column_heading)
$pdf->Cell(80,12,$column_heading,1);
}
foreach($result as $row) {
$pdf->SetFont('Arial','',11);
$pdf->Ln();
foreach($row as $column)
$pdf->Cell(80,12,$column,1);
}
$pdf->Output();
这是我的数据库 Controller 类
class DBController {
private $host = "localhost";
private $user = "root";
private $password = "";
private $database = "patients_db";
function runQuery($sql) {
$conn = new mysqli($this->host,$this->user,$this->password,$this->database);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$resultset[] = $row;
}
}
$conn->close();
if(!empty($resultset))
return $resultset;
}
}
我们将非常感谢任何帮助。
最佳答案
我不熟悉 FPDF
,因此我只是按照您提供的代码进行操作。
<?php
$db_handle = new DBController();
$result = $db_handle->runQuery('select p.*, s.sname as state_name,
l.lname as lga_name from pat_reg p INNER join lga l on p.lga_id =
l.lga_id INNER join states s on p.state_id = s.state_id');
// Header query removed
require('fpdf.php');
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',11);
// Add some logic to ensure there is at least one row
if(count($result) > 0){
// Loop through the keys of the associative array (use the first row)
foreach($result[0] as $header => $value) {
$pdf->Cell(80,12,$header,1);
}
// Add the line ending here too I assume?
$pdf->Ln();
// Loop through rows
foreach ($result as $row) {
$pdf->SetFont('Arial','',11);
$pdf->Ln();
foreach($row as $column)
$pdf->Cell(80,12,$column,1);
}
}
// Output PDF
$pdf->Output();
} else {
// Error handling
}
这个想法是,我们从数据库对象获得的结果是关联数组,并且每个结果都遵循key => value
模式。因此,假设结果中至少有一个条目,我们可以查看第一个条目,循环遍历键并将它们打印为标题。
关于php - 如何在php中正确输出mysql数据库的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46955782/