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:
Wynik dodania książki powinien być pokazany następująco:
Wykorzystując phpMyAdmina, sprawdź czy do tabeli ksiazki
został dodany nowy rekord.
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
, funkcjadoubleval()
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 jakINSERT
,DELETE
iUPDATE
, a więc modyfikujące bazę danych.