Почему мой PHP вставляет правильное количество строк, но в строках нет данных? - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь добавить скрипт, который делает запрос к моей базе данных MySQL и отображает данные обратно в HTML-таблицу. В тот момент, когда запрос сделан, и количество строк в таблице соответствует количеству строк в данных mysql, однако никаких физических данных там нет.

Код, который я пытаюсь использовать:

<div class="container" style="margin-top:2em;margin-bottom:33em;">
  <table border="1" class="table table-striped" style="margin-top: 2em;">
    <thead>
      <tr>
        <th>id</th>
        <th>username</th>
        <th>passcode</th>
      </tr>
    </thead>
    <tbody>
    <?php
    // ini_set('display_errors', 1);
    // ini_set('display_startup_errors', 1);
    // error_reporting(E_ALL);
    $servername="localhost";
    $username="wvptszyl_sc"; 
    $password="wvptszyl_sc";
    //!@#$%^&*(
    $db="wvptszyl_sc";

    $conn=mysqli_connect($servername,$username,$password,$db);
    //mysql_select_db($db);  
    if (!$conn) {
        echo "Error: Unable to connect to MySQL." . PHP_EOL;
        echo "Debugging errno: " . mysqli_connect_errno($conn) . PHP_EOL;
        echo "Debugging error: " . mysqli_connect_error($conn) . PHP_EOL;
        exit;
    }
    @session_start();
      $result = $conn->prepare("SELECT id, username, passcode FROM admin");
      $result->execute();
      for($i=0; $row = $result->fetch(); $i++){
    ?>
      <tr>
        <td><label><?php echo $row['id']; ?></label></td>
        <td><label><?php echo $row['username']; ?></label></td>
        <td><label><?php echo $row['passcode']; ?></label></td>
      </tr>
      <?php } ?>
    </tbody>
  </table>
</div>

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

1 Ответ

0 голосов
/ 16 января 2019

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

Так что измени это

для ($ i = 0; $ row = $ result-> fetch (); $ i ++) {

к этому:

foreach ($result->fetch_all() as $row) {

$ result-> fetch_all () возвращает ассоциативный массив данных. С помощью цикла foreach вы получаете доступ к каждому элементу в этом массиве и можете получить к нему доступ с помощью $ row ['any-key-you-want']

...