我有这段代码,不知怎的,它总会跳过第一个结果,我不知道为什么因为我在我的代码中的其他地方使用相同类型的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>");
}
}
答案 0 :(得分:0)
好的经过多次测试后,我的IF语句与此问题无关,它与printf()有关,因为如果我使用print_r(),我将得到完整的结果集,但不知何故printf()会跳过第一个结果。
可悲的是,我不知道为什么会这样做,我会继续阅读文档。
谢谢!