2012-08-02 60 views
-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'); 

?> 
+3

问题很可能出现在您的PHP代码接收数据。告诉我们。 – DCoder 2012-08-02 08:39:26

+0

mysql语句没问题。向我们展示剩下的代码。 – 2012-08-02 08:41:20

+0

@DCoder我将显示代码 – MudMan23 2012-08-02 08:42:05

回答

2

这些都是你的线条,与一些回声的去除

$query = mysql_query($sql); 
$data = mysql_fetch_array($sql); 
while($data = mysql_fetch_array($query)) 

这下联是真的很奇怪:你做一个额外的fetch_array,但与SQL字符串作为参数?这不是很有用,不会给出错误吗?

你应该清理一些这样的代码,例如,不要执行你不需要的额外的“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); 
    } 

?> 

请注意:额外的获取数组的

  1. 拆除。
  2. 删除所有用于调试的HTML和PDF内容
  3. 尽可能小的自包含代码。
+0

非常感谢,我会检查一遍,我已经删除多余取阵列,但在TCPDF仍然相同,实际的数据丢失。但是这个查询仍然很简单。 – MudMan23 2012-08-02 09:28:54

+0

我试着去阅读所有的意见,并尝试我的剧本,但它仍然是错误的,我的PHP结果仍不complate和失踪的第一行。我对此感到困惑。任何人都帮助我? – MudMan23 2012-08-06 02:42:59

+0

至于试着一切,我专门劝你删除你不需要测试你的问题,例如,所有的东西你的回声。请这样做,并在此处显示该代码。编写一个只能执行一个查询的脚本,执行该脚本,然后仅回显结果的id(或某个)。尽可能小而自足。这里显示代码,结果。好的变化是你会在这个过程中发现错误,但是如果没有的话,这将是在这里发布的东西。 html,颜色等在这里并不重要。 – Nanne 2012-08-06 08:52:30

相关问题