mysqli两次调用相同的数据

时间:2017-05-03 11:19:08

标签: php mysqli

任何人都可以解释一个详细的答案,因为我无法在stackoverflow上找到它

<?php
  error_reporting(E_ALL);
  ini_set('display_errors', 1);
  ini_set('log_errors',1);
  mysqli_report(MYSQLI_REPORT_ALL);
   $link = mysqli_connect('localhost', 'root', '', 'test') or 
  die(mysqli_connect_error());
    $query2 = "Select * from qualifications";
    $result=mysqli_query($link,$query2)or die (mysqli_error($link));   
    ?>
 <form>
  <table>
     <tr>
        <td>
           <select name="short_term_degree" id="short_term_degree" >
              <option value="">Select</option>
              <?php
                 while ( $d=mysqli_fetch_assoc($result)) {
                  echo "<option 
  value='".$d['qual_id']."'>".$d['qualification']."</option>";
                  }
                  ?>
           </select>
        </td>
     </tr>
     <tr>
        <td>
           <select name="short_term_course" id="short_term_course" >
              <option value="">Select</option>
              <?php
                 while ( $d=mysqli_fetch_assoc($result)) {
                 echo "<option 
  value='".$d['qual_id']."'>".$d['qualification']."</option>";
                 }
                 ?>
           </select>
        </td>
       </tr>
    </table>
  </form>
</body>

我得到的结果

<select name="short_term_degree" id="short_term_course">
 <option value="">Select</option>
 <option value="268">Graduate</option>
 <option value="269">Mtech</option>
 <option value="353">Bachelor of Econimics</option>
</select>
<select name="short_term_course" id="short_term_course">
 <option value="">Select</option>
</select>

第二个选择框不显示任何数据是什么原因。

为什么我需要在OR mysqli_data_seek($ result,0)之前再次使用mysqli_query(); 在选择框中获得结果

3 个答案:

答案 0 :(得分:2)

不要像这样写两次相同的代码

<?php
  error_reporting(E_ALL);
  ini_set('display_errors', 1);
  ini_set('log_errors',1);
  mysqli_report(MYSQLI_REPORT_ALL);
   $link = mysqli_connect('localhost', 'root', '', 'test') or 
  die(mysqli_connect_error());
    $query2 = "Select * from qualifications";
    $result=mysqli_query($link,$query2)or die (mysqli_error($link));  
    $options = "";
    while ( $d=mysqli_fetch_assoc($result)) {
                  $options .= "<option 
  value='".$d['qual_id']."'>".$d['qualification']."</option>";
                  } 
    ?>
 <form>
  <table>
     <tr>
        <td>
           <select name="short_term_degree" id="short_term_degree" >
              <option value="">Select</option>
              <?php
                 echo $options;
                  ?>
           </select>
        </td>
     </tr>
     <tr>
        <td>
           <select name="short_term_course" id="short_term_course" >
              <option value="">Select</option>
              <?php
                 echo $options;
                 ?>
           </select>
        </td>
       </tr>
    </table>
  </form>
</body>

答案 1 :(得分:1)

返回与获取的行对应的数组,并向前移动内部数据指针。

当您尝试使用第二个while循环时,内部数据点仍然在结尾。你没有做任何重置它。

您可以使用mysqli_data_seek($result, 0);

将其移回到开头

<强>更新

当第一次循环运行时,内部数据指针向前移动并到达最后一个数据指针。因此,当您尝试使用第二个while循环从中获取数据时。所以没有更多的数据,因为。它已经到达最后一个数据指针。

答案 2 :(得分:-1)

您可以按以下方式使用mysqli_fetch_assoc两次: -

How to go through mysql result twice?