2016-01-26 4 views
0

Как получить результаты для двух подготовленных операторов с помощью MySQLi?Как получить данные для двух подготовленных операторов? (MySQLi)

Я пытаюсь получить данные для двух подготовленных операторов. $ stmt представляет contentBox div и $ stmt2 представляет штатный бокс div.

$ stmt работает, извлекает окна содержимого без ошибок. По какой-то причине $ stmt2 не загружает никаких результатов.

Вот мой код:

<?php 

     if ($stmt = $conn->prepare("SELECT `id`, `name` FROM ranks ORDER BY `id` DESC")) 
     { 
      $stmt->execute(); 
      $stmt->bind_result($id, $rank); 

      while($stmt->fetch()) 
      { 
       echo '<div class="contentBox"> 
       <div class="contentHeader headerOwner">' . $rank . '</div> 
        <div class="contentInside" style="width:auto;margin:auto;text-align:center;margin-top: -2px;margin-left: 3px;margin-bottom: -4px;">'; 

       if ($stmt2 = $conn->prepare("SELECT `id`, `username`, `look`, `online` FROM `users` WHERE `rank` = ?")) 
       { 
        $stmt2->bind_param('i', $id); 
        $stmt2->execute(); 
        $stmt2->bind_result($id2, $username, $look, $online); 

        if ($stmt->num_rows <= 0) 
        { 
         echo '<div class="alert alert-danger">No records found.</div>'; 
        } 
        else 
        { 
         while($stmt2->fetch()) 
         { 
          echo '<div class="staffBox"> 
          <div class="staffPicture" style="background-image: url(\'/media/useravatars/DefaultAvatar.png\');"></div> 
          <div class="staffName"> 
          <div class="staffHabbo"><img src="https://www.habbo.nl/habbo-imaging/avatarimage?figure=ca-1801-1408.ch-3334-110-1408.ha-3331-110.hr-115-61.lg-3337-110.hd-180-1007.sh-3338-1408&direction=4&head_direction=4&action=wav&size=s" border="0"/></div> 
          <p style="margin: 5px 0px;font-weight: bold;"><a href="/user/' . $username . '" ng-click="progress()" class="username-black" tooltips="" tooltip-title="' . $username . '">' . $username . '</a></p> 
          <p style="margin: 5px 0px;">Owner</p> 
          <p style="margin: 5px 0px;"><i>United States</i></p> 
          </div></div>'; 
         } 
        } 

        $stmt2->close(); 
       } 

       echo '</div> 
       </div>'; 
      } 

      $stmt->close(); 
     } 

    ?> 

Левое изображение является результатом я и правое изображение является результатом я должен получать.

левое изображение:

enter image description here

правое изображение:

enter image description here

Спасибо заранее.

+1

Вы считаете, что ваши запросы работают без каких-либо ошибок. –

+0

@JayBlanchard Как я могу добавить проверку ошибок в код? –

+0

Это зависит от API: вы можете использовать 'или die (mysql_error())'. Или вы можете добавить '$ -> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);' сразу после открытия соединения для обнаружения ошибок для PDO. Вы также можете найти проблемы в ваших текущих журналах ошибок. –

ответ

1

Вы не можете вложить два подготовленных оператора из одного соединения, если вы не вызываете store_result() после каждого запроса. Объект оператора - это указатель или указатель на базовый набор результатов, вызывающий store_result() указывает драйверу MySQL на выбор всего набора результатов в память, позволяя вам установить новый указатель.

+0

Это решение работает, спасибо! –

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