Создание веб приложения на php+MySql. Введение в PDO

Главная » Видеоуроки » PHP+MySQL » Создание веб приложения на php+MySql. Введение в PDO
В данном видеоуроке мы продолжим создавать веб приложение в связке с MySQL. Мы напишем функцию получения всех игроков при помощи PHP PDO и выведем полученные данные из БД в браузер.
Но сначала мы ответим на вопрос, почему код из прошлого урока является избыточным? Дело в том, что try..catch в примере просто выводит сообщение об ошибке, но если вы уберете try…catch и зададите некорректные данные, то получите аналогичный вывод об ошибке, которая сообщит вам о некорректности конфигурации подключения к вашей базе данных. Поэтому имеет смысл заключать приведенный в уроке код в try…catch, если вы будете отлавливать и обрабатывать ошибку каким-либо определенным образом.

Что касается функции getAllPlayers, которую мы напишем, то логика ее работы довольно проста: во-первых в функцию необоходимо передать объект $db, определенный в файле db.php. Это необходимо, потому что данная и последующие наши функции будут непосредственно обращаться к базе данных. Далее мы создаем строковую переменную в виде SQL запроса и подготавливаем его.

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

После этого запрос выполняется при помощи функции execute. А далее начинается работа с данными. Важно понимать, что эти данные надо разобрать для вида, понятного и удобного для php. Для этого существуют функции fetch, fetchAll и пр. Функции fetch имеют один важный параметр — стиль разбора. Выражаясь проще, функция разбирает данные в определенной структуре для php (массив, объект и пр.).

Далее данные получаются из вызова функции и выводятся в бразуер.

Код урока (api.php)

<?php

function getAllPlayers($db) {

    $sql = "SELECT * FROM players";
    $result = array();

    $stmt = $db->prepare($sql);
    //print_r($stmt);
    $stmt->execute();
    //print_r($stmt);

    while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { // рассмотреть fetchAll (режим FETCH_BOTH)
        $result[$row['player_id']] = $row;
        /*echo "<pre>";
        print_r($result[$row['player_id']]);
        echo "</pre>";*/
    }

    //$result = $stmt->fetchAll();

    /*echo "<pre>";
    print_r($result);
    echo "</pre>";*/

    return $result;
}

Код урока (index.php)

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet" crossorigin="anonymous">
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" crossorigin="anonymous"></script>
    </head>
    <body>
        <header>
            <nav class="navbar navbar-default">
              <div class="container-fluid">
                <div class="navbar-header">
                  <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                  </button>
                  <a class="navbar-brand" href="#">Sport CRM</a>
                </div>

                <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                  <ul class="nav navbar-nav">
                    <li><a href="/">Главная</a></li>
                    <li><a href="players.php">Игроки</a></li>
                    <li><a href="teams.php">Команды</a></li>
                  </ul>
                </div>
              </div>
          </nav>
        </header>

        <div class="container-fluid">
            <?php include 'db.php'; ?>
            <?php include 'api.php'; ?>
            <?php
                    $players = getAllPlayers($db);
             ?>
             <table class="table table-bordered">
                 <tr>
                     <th>Игрок</th>
                     <th>Команда</th>
                     <th>Страна</th>
                 </tr>
                 <?php foreach ($players as $player) { ?>
                    <tr>
                        <td><?php echo $player['player_name']; ?></td>
                    </tr>
                <?php } ?>

             </table>
        </div>

        <footer>

        </footer>
    </body>
</html>

0 Комментариев

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *


Срок проверки reCAPTCHA истек. Перезагрузите страницу.

Pin It on Pinterest

Share This