PHP: Obsługa Bazy MySQL w PHP na przykładzie bazy Sklep

Poniżej jest kod aplikacji która jest wykorzystana w materiałach szkoleniowych do bazy MySQL.

<?php // Ustawienia połączenia z bazą danych $host = 'ADRES IP'; $user = 'LOGIN'; $password = 'HASŁO'; $database = 'sklep'; // Połączenie z bazą danych $conn = new mysqli($host, $user, $password, $database); // Sprawdzenie połączenia if ($conn->connect_error) { die("Błąd połączenia: " . $conn->connect_error); } // Zmienna do przechowywania wyników i błędów $resultMessage = ''; $tableOutput = ''; // Obsługa formularza if ($_SERVER['REQUEST_METHOD'] === 'POST') { $query = $_POST['sql_query'] ?? ''; if (!empty($query)) { if ($result = $conn->query($query)) { if ($result instanceof mysqli_result) { // Tworzenie tabeli z wynikami $tableOutput .= "<table border='1' cellpadding='5'><tr>"; while ($fieldinfo = $result->fetch_field()) { $tableOutput .= "<th>{$fieldinfo->name}</th>"; } $tableOutput .= "</tr>"; while ($row = $result->fetch_assoc()) { $tableOutput .= "<tr>"; foreach ($row as $cell) { // Bezpieczne przetwarzanie wartości (null -> pusty string) $tableOutput .= "<td>" . htmlspecialchars($cell ?? '') . "</td>"; } $tableOutput .= "</tr>"; } $tableOutput .= "</table>"; $result->free(); } else { $resultMessage = "Zapytanie wykonane pomyślnie."; } } else { $resultMessage = "Błąd zapytania: " . $conn->error; } } else { $resultMessage = "Pole zapytania nie może być puste."; } } $conn->close(); ?> <!DOCTYPE html> <html> <head> <title>Podgląd bazy sklep</title> </head> <body> <h1>Podgląd bazy Sklep</h1> <h4>Tutaj można wykonywać tylko kwerendy SELECT</h4> <form method="post"> <label for="sql_query">Wpisz zapytanie SQL:</label><br> <textarea name="sql_query" id="sql_query" rows="6" cols="80"><?= htmlspecialchars($_POST['sql_query'] ?? '') ?></textarea><br><br> <input type="submit" value="Wykonaj zapytanie"> </form> <div style="margin-top:20px;"> <?php if (!empty($resultMessage)) echo "<p><strong>$resultMessage</strong></p>"; ?> <?= $tableOutput ?> </div> <a href="LINK">Kod tej aplikacji jest dostępny tutaj</a> </body> </html>