POWRÓT NA STRONĘ SZKOŁY

Wstawianie danych do bazy MySQL za pomocą PHP

Zapisywanie danych w bazie przebiega podobnie, jak odczyt danych. Mamy te same operacje: nawiązanie połączenia, wysłanie zapytania i odczyt wyników. W tym wypadku zapytanie zamiast słowa kluczowego SELECT, będzie zawierało INSERT

Ćwiczenie 11_0_0_1. Wstawianie danych do bazy MySQL

Utwórz pliki dodaj.php oraz wynik.php.

Plik dodaj.php:

<!doctype html>
<html>
  <head>
    <title>Dodawanie książki w bazie ksiegarnia_internetowa</title>
    <meta charset="utf-8" />
  </head>
  <body>
    <h1>Dodawanie książki w bazie ksiegarnia_internetowa</h1>
    <form action="wynik.php" method="post">
      <input type="text" name="isbn" /> ISBN<br /><br />
      <input type="text" name="autor" /> Autor<br /><br />
      <input type="text" name="tytul" /> Tytuł<br /><br />
      <input type="text" name="cena" /> Cena<br /><br />
      <input type="submit" name="dodaj" value="Dodaj" />
    </form>
  </body>
</html>

Plik wynik.php:

<!doctype html>
<html>
  <head>
    <title>Wyniki dodania książki</title>
    <meta charset="utf-8" />
  </head>
  <body>
    <h1>Wyniki dodania książki</h1>
    <?php
      $isbn = trim($_POST['isbn']);
      $autor = trim($_POST['autor']);
      $tytul = trim($_POST['tytul']);
      $cena = trim($_POST['cena']);
      if (!$isbn || !$autor || !$tytul || !$cena)
      {
        echo 'Brak wszystkich danych, wróć do poprzedniej strony i spóbuj ponownie!';
        exit;
      }
      if (!get_magic_quotes_gpc())
      {
        $isbn = addslashes($isbn);
        $autor = addslashes($autor);
        $tytul = addslashes($tytul);
        $cena = doubleval($cena);
      }
      @ $db = new mysqli('localhost','admin','admin123','ksiegarnia_internetowa');
      
      if (mysqli_connect_errno())
      {
        echo 'Połączenie z bazą nie powiodło się. Spóbuj ponownie';
        exit;
      }
      $db->query('SET NAMES utf8');
      $db->query('SET CHARACTER_SET utf8_unicode_ci');
      $zapytanie = "insert into ksiazki values ('".$isbn."', '".$autor."', '".$tytul."', '".$cena."')";
      $wynik = $db->query($zapytanie);
      if ($wynik) echo 'Liczba książek dodanych do bazy:'.$db->affected_rows;
    ?> 
  </body>
</html>

Formularz powinien wyglądać następująco:

Formularz dodawania
Rysunek 11_0_0_1. Formularz dodania nowej książki

Wynik dodania książki powinien być pokazany następująco:

Wynik dodania nowej książki
Rysunek 11_0_0_2. Wynik dodania nowej książki

Wykorzystując phpMyAdmina, sprawdź czy do tabeli ksiazki został dodany nowy rekord.

Tabela ksiązki po dodania nowej pozycji
Rysunek 11_0_0_3. Tabela ksiązki po dodania nowej pozycji

Kilka uwag:

  • Zmieniło się polecenie SQL które zastosowaliśmy do dodania danych (wskaż to polecenie).
  • Cena nowej książki będzie typu float, funkcja doubleval() usunie wszelkie nieprawidłowe znaki, w tym również symbol waluty wpisany niepotrzenbie przez użytkownika.
  • Metodę $db->affected_rows; należy stosować, jeżeli wykonujemy takie zapytania jak INSERT, DELETE i UPDATE, a więc modyfikujące bazę danych.