2015-06-05 6 views
0

У меня есть этот кусок кода, и как-то он всегда будет пропускать первый результат, и я понятия не имею, почему, потому что я использую такой же цикл while в другом месте в моем коде, и проблема не бывает. Если я запускаю только MYSQL-запрос без цикла, я получаю все результаты, но код ниже всегда будет пропускать первую строку. Было бы здорово, если бы кто-нибудь мог дать мне совет или, возможно, реструктурировать запрос?MySQL пропустил первый результат

Спасибо

EDIT ** добавлены, если заявления

($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

Это ваш фактический код или psuedocode? Ничто не похоже на то, что это вызовет вашу проблему. – Devon

+0

Вы должны сделать переменные 'var_dump()', возможно, они нарушают html. – jeroen

+0

Это мой код, просто printf как больше материала для него ... некоторые операторы if, которые проверяют, приостановлен ли продукт или нет. – Globz

ответ

0

Хорошо после более тестирования, мой IF заявления не имеет ничего общего с этой проблемой, это было связано с Е(), потому что, если я использую print_r() Я получу полный набор результатов, но как-то printf() пропустит первый результат.

К сожалению, я понятия не имею, почему это делается, я буду продолжать читать документ.

Спасибо!

Смежные вопросы