Вытащить информацию из базы данных и отобразить в html?

Я пытаюсь отобразить информацию из базы данных на html-странице, но отображается только сообщение «подключено успешно». Имя базы данных «admin», а таблица в этой базе данных называется «users». Я понятия не имею, как пройти мимо сообщения и просто отобразить созданную мной таблицу.

Индексная страница (index.php):

<?php
include_once('connection.php');
$query = "select * from users";
$result=mysql_query($query);
?>
<!DOCTYPE html>
<html>
<title>
    <head> Fetch Data Frome Database</head>
</title>
<body>

<table align = "center" border = "1px" style = "width:250px;       line-height: 30px;">
    <tr>
        <th colspan = "4"><h2>Account Record</h2></th>
    </tr>
    <t>
        <th>ID</th>
        <th>Username</th>
        <th>Password</th>
    </t>

    <?php

    while($rows=mysql_fetch_assoc($result))
    {
    ?>

    <tr>
        <td><?php echo $rows['ID'];?></td>
        <td><?php echo $rows['username'];?></td>
        <td><?php echo $rows['password'];?></td>
    </tr>
    <?php
    }

    ?>

</table>

</body>
</html>

СТРАНИЦА ПОДКЛЮЧЕНИЯ (connection.php):

<?php
//Include your own values for username, password and     dbase name

$host = "localhost";
$username = "root";
$password = "root";
$dbname = "admin";

// Create connection
$conn = new mysqli($host, $username, $password,     $dbname);

// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} 
echo "Connected successfully";
?>

Вы подключились с помощью mysqli, но использовали mysql в запросе.

silent_coder14 13.02.2019 21:02

Спасибо. Хотя это помогло фактически отобразить таблицу на веб-странице, результаты из таблицы не были отображены. Я изменил запрос sql на sqli и цикл while на sqli. я ничего не пропустил, чтобы на самом деле отображать результаты?

user10327730 13.02.2019 21:11

<?php include_once('connection.php'); $query = "ВЫБЕРИТЕ * ОТ пользователей"; $result=mysqli_query($conn, "SELECT * FROM users"); ?>

user10327730 13.02.2019 22:27

Я изменил свою кодировку на указанную выше ^^^. Теперь отображается таблица, а также 3 слота для 3 наборов данных, которые у меня есть в базе данных. все еще не тянет его из базы данных

user10327730 13.02.2019 22:28
ПРЕДУПРЕЖДЕНИЕ: не используйте устаревший интерфейс mysql_query, который был удален в PHP 7. Замена, такая как PDO не сложно изучить, и руководство, такое как PHP правильный путь, помогают объяснить лучшие практики. Здесь параметры НЕТправильно сбежал, и в этом коде есть серьезный Ошибки внедрения SQL. Экранируйте любой и все пользовательские данные, особенно из $_POST или $_GET.
tadman 13.02.2019 23:46
ПРЕДУПРЕЖДЕНИЕ: Написать собственный уровень управления доступом непросто, и есть много возможностей сделать это серьезно неправильно. Пожалуйста, не пишите свою собственную систему аутентификации, когда любой современный рамки развития, такой как Ларавель, поставляется со встроенным надежным система аутентификации. Как минимум используйте рекомендуемые лучшие практики безопасности и никогда не храните пароли в виде обычного текста или слабый хеш, например SHA1 или MD5.
tadman 13.02.2019 23:46
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
6
67
4

Ответы 4

Попробуйте поместить весь ваш PHP в один блок

 <?php

include_once('connection.php');
$query = "select * from users";
$result=mysql_query($query);

    while($rows=mysql_fetch_assoc($result))
    {


    echo "<tr>";
        echo "<td>".$rows['ID']."</td>";
    echo "<td>".$rows['username']."</td>";
    echo "<td>".$rows['password']."</td>";
    echo "</tr>";

}

?>

только что попробовал этот помощник и все тот же результат. Просто показывая таблицу и заголовки без информации о базе данных. Имена столбцов, которые я пытаюсь вызвать из базы данных, также совпадают. Не могу думать ни о чем другом.

user10327730 13.02.2019 21:24

Что вы получаете, когда используете var_dump или print_r $result? Давайте проверим, что данные действительно поступают.

Russ J 13.02.2019 21:26

жаль, что я никогда не пробовал это раньше. не могли бы вы объяснить, как это проверить?

user10327730 13.02.2019 21:35

просто var_dump($result); или print_r($результат);

Russ J 13.02.2019 21:36

Ах! Что ж, это указывает на то, что проблема должна заключаться в вашем соединении или вашем запросе, поскольку данные, похоже, не попадают на страницу.

Russ J 13.02.2019 21:41

хотя, когда я набираю "print_r($result);" он возвращает "1".

user10327730 13.02.2019 21:41

@Вы уверены, что у вас есть записи в базе данных?

silent_coder14 13.02.2019 21:46

да. локальный хост: 8889. Имя базы данных "admin". Имя таблицы — «пользователи». В базе данных есть 3 записи с "ID", "логином" и "паролем". Идентификатор является первичным ключом, и для него выбрано автоматическое увеличение.

user10327730 13.02.2019 22:09

могу я спросить, см. "$result=mysqli_query($query);" что обычно должно быть между скобками?

user10327730 13.02.2019 22:12

Первая проблема заключается в том, что ваш цикл while настроен неправильно. Оператор равенства передаст значение mysql_fetch_assoc($result) в $rows, так что это просто ничего не сделает. Просто подумайте, что один знак равенства не означает, что он действительно означает, что он становится равным. Таким образом, строки становятся результатом. Если у вас есть два знака равенства, вы сравниваете два значения, но это вам тоже не поможет. Что вам действительно нужно сделать, так это сначала установить строки на ноль, а затем сказать, что, пока строк меньше, чем результат, эхо, идентификатор, эхо, имя пользователя, эхо, пароль и добавить 1 к строкам.

Таким образом, цикл while должен выглядеть примерно так

$rows = 0;
while($rows < mysql_fetch_assoc($result) ){ 
         $rows++   
   ?>

<tr>
    <td><?php echo $rows['ID'];?></td>
    <td><?php echo $rows['username'];?></td>
    <td><?php echo $rows['password'];?></td>
</tr>
<?php
    }
}

Предполагая, что $result=mysql_query($query) действительно имеет значение, это должно работать.

Если вам нужно проверить, хорош ли ваш результат, используйте печать массива PHP для проверки print_r($result); Это выведет все результаты на экран.

Поэтому я предпочитаю использовать этот метод, так как он немного лучше, чем любой другой метод, который я пробовал. Кроме того, я вставляю соединение в класс, и это значительно упрощает работу с соединениями с базой данных.

Страница ПОДКЛЮЧЕНИЯ БД:

class Database
{
private $host = "localhost";
private $db_name = "root";
private $username = "root";
private $password = "admin";
public $conn;

public function dbConnection()
{

    $this->conn = null;
    try
    {
        $this->conn = new PDO("mysql:host = " . $this->host . ";dbname = " . $this->db_name, $this->username, $this->password);
        $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    catch(PDOException $exception)
    {
        echo "Connection error: " . $exception->getMessage();
    }

    return $this->conn;
}

}

Теперь я создаю класс для соединения. Обычно я называю его именем сайта.

require_once "db/config/page/location.php";

class localhost {
  // Create conn to db
      private $conn;

      public function __construct()
      {
        $database = new Database();
        $db = $database->dbConnection();
        $this->conn = $db;
      }

      public function runQuery($sql)
      {
        $stmt = $this->conn->prepare($sql);
        return $stmt;
      }
}

Примечание: когда вы хотите использовать соединение на любой странице. Вы можете сделать следующее: Индексная страница EG:

<?php
    include_once('class.php');
    $lHost = new localhost();

        //calling the users
        $stmt = $lHost->runQuery('SELECT * FROM `users`');
        $stmt->execute();
        $users = $stmt->fetchAll(PDO::FETCH_ASSOC);
    ?>
    <!DOCTYPE html>
    <html>
    <title>
        <head> Fetch Data Frome Database</head>
    </title>
    <body>

    <table align = "center" border = "1px" style = "width:250px;       line-height: 30px;">
        <tr>
            <th colspan = "4"><h2>Account Record</h2></th>
        </tr>
        <t>
            <th>ID</th>
            <th>Username</th>
            <th>Password</th>
        </t>

        <?php
        foreach ($users as $key => $user) {
        ?>
        <tr>
            <td><?php echo $user['ID'];?></td>
            <td><?php echo $user['username'];?></td>
            <td><?php echo $user['password'];?></td>
        </tr>
        <?php
        }
        ?>

    </table>

    </body>
    </html>

Не стесняйтесь задавать мне любые вопросы.

Попробуйте это в своем файле. Используйте этот файл в качестве первого для тестирования.

<html>
   <head>
      <title>Selecting Table in MySQLi Server</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3306';
         $dbuser = 'root';
         $dbpass = '';
         $dbname = 'admin';
         $conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);

         if (! $conn ) {
            die('Could not connect: ' . mysqli_error());
         }
         echo 'Connected successfully<br>';
         $sql = 'SELECT name FROM tutorials_inf';
         $result = mysqli_query($conn, $sql);

         if (mysqli_num_rows($result) > 0) {
            while($row = mysqli_fetch_assoc($result)) {
               echo "Name: " . $row["name"]. "<br>";
            }
         } else {
            echo "0 results";
         }
         mysqli_close($conn);
      ?>
   </body>
</html>

Примечание: Вы можете проверить наличие ошибок, используя mysqli_error()например, echo mysqli_error(); после выбранного запроса.

Другие вопросы по теме