我有这段代码,不知何故,它总是跳过第一个结果,我不知道为什么,因为我在代码中的其他地方使用了相同类型的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>");
}
} 发布于 2015-06-06 00:14:26
好的,经过更多的测试,我的IF语句与这个问题无关,它与printf()有关,因为如果我使用print_r(),我将获得完整的结果集,但不知何故printf()会跳过第一个结果。
遗憾的是,我不知道它为什么这样做,我会继续阅读文档。
谢谢!
https://stackoverflow.com/questions/30669908
复制相似问题