-1

我用 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');

?>
4

1 回答 1

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 指南和相关的常见问题解答以获取更多信息。此功能的替代方案包括:

mysqli_fetch_array()
PDOStatement::fetch()

现在试试这个。作为一个“尽可能小”的例子,这是你首先应该做的。

<?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);
    }

?>

请注意:

  1. 删除额外的 fetch 数组。
  2. 删除所有用于调试的 HTML 和 PDF 内容
  3. SMALL,尽可能的自包含代码。
于 2012-08-02T08:58:19.063 回答