2015-08-17 3 views
-6

это время шлейфного только Показано только Последняя записьWhile Loop в PHP не работает должным образом

enter image description here

<table border="5" bgcolor="white" width="300" align="center"> 
<tr> 
    <th bgcolor="grey">User ID</th> 
    <th bgcolor="">User Name</th> 
    <th bgcolor="grey">User Password</th> 
    </tr> 
    <?php 


    $Load = "select * from sudents"; 
    $fetch = mysql_query($Load); 
    while ($rows = mysql_fetch_array($fetch)) 
     { 
     $ID=$rows['id']; 
     $User=$rows['user']; 
     $Password=$rows['password']; 
    } 


    echo "<tr> 
     <td>$ID</td> 
     <td>$User</td> 
     <td>$Password</td> 
     </tr> 

    "; 
     ?> 

</table> 
+4

Ваша петля не * показывает * ничего вообще. Нигде в этом коде вы ничего не печатаете на странице. – David

+0

umm .. так что может быть неправильно? Im Sorry Im Просто изучаю PHP. – Cat

+0

@ Кат: Что-то не так с кодом в этом вопросе, так это то, что он вообще ничего не печатает на странице. Я не знаю, какой код генерирует результат в скриншоте, который вы связали, но это не этот код. – David

ответ

1

Ваш цикл ничего не печатает на страницу. Он устанавливает значения для переменных. И это переписывает эту переменную каждый раз. Поэтому, когда цикл завершен, все еще установлены значения последние.

Затем вы просто повторяете это последнее значение. Однажды.

Вместо эхо выхода внутри цикла так что вы можете иметь один элемент вывода для каждого итерации цикла:

while ($rows = mysql_fetch_array($fetch)) 
{ 
    $ID=$rows['id']; 
    $User=$rows['user']; 
    $Password=$rows['password']; 

    echo "<tr> 
    <td>$ID</td> 
    <td>$User</td> 
    <td>$Password</td> 
    </tr>"; 
} 

Примечания, однако, что есть несколько других вещи, здесь не так :

  1. Ваш код уязвим для атак XSS.
  2. Вы - с паролями пользователей. Никогда, никогда сделайте это. В вашей системе не должно быть паролей пользователей в удобном для чтения формате. Пользовательские пароли должны быть закрыты с использованием одностороннего хеша и должны быть никогда не может быть восстановлен от никто.
+0

Сэр, я на самом деле тренирую себя. Это не фактический пароль, его просто некоторые случайные данные, вставленные в таблицу для тестирования, хотя я признаю, что не лучшая идея Name is Password. Я занимаюсь изучением PHP. Хотя я буду помнить о ваших мыслях, когда я действительно что-то буду развивать. Большое спасибо за поддержку. Я только что зарегистрировался на сайте :) – Cat

+0

Извините, но как я могу отметить вопрос как Answered. Я не могу найти кнопку option /. – Cat

1

Как у вас есть, вы только печать строки таблицы один раз, и используя последние значения строки. Вся ваша петля присваивает значения $ID, $User и $Password, и каждый цикл прохождения просто перезаписывает старые значения. Чтобы исправить это, вам нужно переместить операторы echo в тело цикла.

Это позволит вам печатать текущие значения по каждой итерации, а не только печатать последние. Вот код, который будет работать для вас.

<table border="5" bgcolor="white" width="300" align="center"> 
    <tr> 
    <th bgcolor="grey">User ID</th> 
    <th bgcolor="">User Name</th> 
    <th bgcolor="grey">User Password</th> 
    </tr> 

    <?php 

    $Load = "select * from sudents"; 
    $fetch = mysql_query($Load); 

    while ($rows = mysql_fetch_array($fetch)) 
    { 
     $ID=$rows['id']; 
     $User=$rows['user']; 
     $Password=$rows['password']; 

     echo "<tr> 
     <td>$ID</td> 
     <td>$User</td> 
     <td>$Password</td> 
     </tr>"; 
    } 

    ?> 

</table> 
+1

@Cat Добро пожаловать :). Когда у вас возникла ваша проблема, отметьте ответ, чтобы показать, что он разрешен, и чтобы будущие программисты с подобной проблемой могли найти справку. – Parker

0

Добро пожаловать в Stack Overflow @Cat Я вижу две проблемы.

Первый: нет echo, var_dump() или print найдено.

Во-вторых, цикл, пока будет перезаписывать ничего до тех пор, как он перебирает, так что в вашем случае я бы нажать на массив с каждым найденному, как это:

<?php 
$q = "SELECT id, user, password FROM sudents"; 
$fetch = mysql_query($q); 

$final = []; 
while ($row = mysql_fetch_array($fetch)) { 
    final[] = $row; 
} 
?> 
<table> 
    <tr> 
     <th>User ID</th> 
     <th>User Name</th> 
     <th>User Password</th> 
    </tr> 
    <?php foreach($final as $r) {?> 
     <tr> 
      <td><?= $r['id'] ?></td> 
      <td><?= $r['user'] ?></td> 
      <td><?= $r['password'] ?></td> 
     </tr> 
    <?php } ?> 
</table> 
+0

О, btw Я рекомендую вам использовать mysqli, а не просто mysql, поскольку его устаревший , удачи. – CodeGodie

+0

Его Kinda мой первый код кода PHP и SQL, ну это что-то, я, очевидно, пойду для MySQLi. Как-то я знаю основы MYSQL – Cat

+0

. Я был бы рад помочь вам с чем угодно. Мне действительно нравится проводить сеансы Teamviewer с людьми, с которыми я встречаюсь, и помогать объяснить проблемы PHP. У вас есть другие вопросы? – CodeGodie

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