我用php和一个带TCPDF的报告创建了一个应用程序,没问题,选择查询运行正常。但如果我仔细查看数据,我发现第一个数据丢失了。
简单示例查询:
SELECT * FROM tb_expedition
如果我在MySQL上运行此查询,则会显示所有数据。如果从我的php程序运行查询,结果仍然不完整。如果总数据是20行,则在php中只出现19行,并且缺少第一个数据。
这是我的代码:
<?php
require_once('tcpdf/config/lang/eng.php');
require_once('tcpdf/tcpdf.php');
// create new PDF document
include "koneksi.php";//conection file
$period=$_GET[PERIOD];
$sql = "SELECT * FROM tb_exp_expor where period = ' $period'";
$hasil = mysql_query($sql);
$data = mysql_fetch_array($hasil);
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
// set font
$pdf->SetFont('times', '', 11);
// landscape
$pdf->addPage( 'L', 'LETTER' );
$html = '
<table border="1" cellspacing="3" cellpadding="4">
<tr><td colspan="9" align="center"><h2>Form Pantauan Expedisi Export</h2></td></tr>
<tr>
<th align="center"><b>Tanggal</b></th>
<th align="center"><b>Nama Expedisi</b></th>
<th align="center"><b>Nama Distributor</b></th>
<th align="center"><b>Kota Tujuan</b></th>
<th align="center"><b>No Faktur</b></th>
<th align="center"><b>Kondisi Armada Pengiriman</b></th>
<th align="center"><b>Ketepatan Jumlah</b></th>
<th align="center"><b>Ketepatan Waktu Kirim</b></th>
<th align="center"><b>Keterangan</b></th>
</tr></table>';
$no=0;
while ($data = mysql_fetch_array($hasil))
{
$html .= '<table border="1"><tr><td align="center">'.$data['tgl'].'</td>
<td align="center">'.$data['nama_exp_expor'].'</td>
<td align="center">'.$data['nama_distributor'].'</td>
<td align="center">'.$data['kota_tujuan'].'</td>
<td align="center">'.$data['no_faktur'].'</td>
<td align="center">'.$data['kon_armada'].'</td>
<td align="center">'.$data['ketepatan_jml'].'</td>
<td align="center">'.$data['ketepatan_wkt_kirim'].'</td>
<td align="center">'.$data['ket'].'</td>
</tr></table> ';
$no++;
}
$pdf->writeHTML($html, true, false, true, false, '');
$pdf->Output('Daftar_Expedisi_Local', 'I');
?>
答案 0 :(得分:2)
这些是你的一些行,删除了一些回声
$query = mysql_query($sql);
$data = mysql_fetch_array($sql);
while($data = mysql_fetch_array($query))
第二行真的很奇怪:你做了一个额外的fetch_array,但是用sql-string作为参数?这不是真的有用,不会给出错误吗?
你应该清理一些这样的代码,例如,不要执行你不需要的额外“fetch_array”。如果之后不起作用,请删除调试不需要的所有不需要的行(回声,颜色等)。您可以更快地找到正在发生的事情:)
当你在这里时,你应该真正考虑从mysql_
功能转移。请阅读手册http://php.net/manual/en/function.mysql-fetch-array.php
建议的替代方案
不鼓励使用此扩展程序。相反,MySQLi或PDO_MySQL 应该使用扩展名。另请参见MySQL:选择API指南和 相关FAQ以获取更多信息。替代此功能 包括:
mysqli_fetch_array()
PDOStatement对象::取()
现在试试吧。这就是你应该首先做的“尽可能小”的例子。
<?php
include "koneksi.php";//conection file
$period=$_GET[PERIOD];
$sql = "SELECT * FROM tb_exp_expor where period = ' $period'";
var_dump($sql);//you can check this query in your database manually
$hasil = mysql_query($sql);
//NO FETCH ARRAY HERE!
while ($data = mysql_fetch_array($hasil)){
var_dump($data);
}
?>
请注意: