MySQL正在跳过第一个结果

时间:2015-06-05 15:06:53

标签: php mysql mysqli

我有这段代码,不知怎的,它总会跳过第一个结果,我不知道为什么因为我在我的代码中的其他地方使用相同类型的while循环,问题不会发生。如果我在没有循环的情况下单独运行MYSQL查询,我会得到所有结果,但下面的代码将始终跳过第一行。如果有人能给我一些建议或重组查询,那会很棒吗?

谢谢

编辑**添加if语句

    ($stmt = $db->prepare('SELECT DISTINCT agdet.ADITEM, agdet.ADSTAT, products.IFDESC, products.ISTAT
                           FROM agdet
                           LEFT JOIN products on agdet.ADITEM = products.ITEMNO
                           LEFT JOIN aghdr    on agdet.AHNUM  = aghdr.AHNUM
                           WHERE agdet.AHCUST =? 
                             AND products.ICODE1 !=? 
                             AND aghdr.AHSTAT !=? 
                           ORDER BY agdet.ADITEM ASC 
                           LIMIT 0, 3000'))
        || fail('MySQL prepare', $db->error);
    $stmt->bind_param('iss', $agreement,$ICODE1,$AHSTAT)
        || fail('MySQL bind_param', $db->error);
    $stmt->execute()
        || fail('MySQL execute', $db->error);
    $stmt->bind_result($ADITEM,$ADSTAT,$IFDESC,$ISTAT)
        || fail('MySQL bind_result', $db->error);

    while($stmt->fetch()){



             $IFDESC = trim($IFDESC); 
             $ADITEM = trim($ADITEM); 


             if ($IFDESC == 'TAXABLE'  ){ $ADITEM = 'hidden';}
             if ($IFDESC == 'XXXX'  ){ $ADITEM = 'hidden';}
             if ($IFDESC ==''){ $IFDESC = 'Aucune description trouvée';}

             $ITEM_ID = ltrim($ADITEM, '0'); 


            if ($ISTAT =='S' OR $ADSTAT =='S'){

printf ("<p>$ADITEM</p><p>ADSTAT</p><p>$IFDESC</p><p>$ISTAT</p>");

        }
            else {

printf ("<p>$ADITEM</p><p>ADSTAT</p><p>$IFDESC</p><p>$ISTAT</p>");

    }
   } 

1 个答案:

答案 0 :(得分:0)

好的经过多次测试后,我的IF语句与此问题无关,它与printf()有关,因为如果我使用print_r(),我将得到完整的结果集,但不知何故printf()会跳过第一个结果。

可悲的是,我不知道为什么会这样做,我会继续阅读文档。

谢谢!