poniedziałek, 24 września 2018

SQLite - PHP


SQLite - PHP

W tym rozdziale nauczysz się korzystać z SQLite w programach PHP.
Instalacja
Rozszerzenie SQLite3 jest domyślnie włączone od PHP 5.3.0. Można go wyłączyć, używając --without-sqlite3 podczas kompilacji.
Użytkownicy systemu Windows muszą włączyć php_sqlite3.dll, aby użyć tego rozszerzenia. Ta biblioteka DLL jest dołączona do dystrybucji systemu Windows w PHP od wersji 5.3.0.
Aby uzyskać szczegółowe instrukcje dotyczące instalacji, zapoznaj się z naszym samouczkiem PHP i jego oficjalną stroną.

Interfejsy API interfejsu PHP

Poniżej znajdują się ważne procedury PHP, które mogą wystarczyć do pracy z bazą danych SQLite z twojego programu PHP. Jeśli szukasz bardziej wyrafinowanej aplikacji, możesz zajrzeć do oficjalnej dokumentacji PHP.
L.p.
API i opis
1
public void SQLite3::open (nazwa pliku, flagi, klucz_enryption)
Otwiera bazę danych SQLite 3. Jeśli kompilacja zawiera szyfrowanie, spróbuje użyć klucza.
Jeśli nazwa pliku jest podana jako ":memory:" , SQLite3::open() utworzy bazę danych w pamięci RAM, która będzie trwać tylko przez czas trwania sesji.
Jeśli nazwa pliku jest rzeczywistą nazwą pliku urządzenia, SQLite3::open() spróbuje otworzyć plik bazy danych, używając jego wartości. Jeśli nie istnieje plik o tej nazwie, tworzony jest nowy plik bazy danych o tej nazwie.
Opcjonalne flagi używane do określenia sposobu otwierania bazy danych SQLite. Domyślnie otwarte używa SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE.
2
public bool SQLite3::exec (string $zapytanie)
Ta procedura zapewnia szybki i łatwy sposób wykonywania poleceń SQL dostarczanych przez argument sql, który może składać się z więcej niż jednego polecenia SQL. Ta procedura jest używana do wykonywania kwerend bez wyników względem danej bazy danych.
3
public SQLite3Result SQLite3::query (string $query)
Ta procedura wykonuje zapytanie SQL, zwracając obiekt SQLite3Result, jeśli zapytanie zwróci wyniki.
4
public int SQLite3::lastErrorCode (void)
Ta procedura zwraca numeryczny kod wyniku ostatniego nieudanego żądania SQLite.
5
public string SQLite3::lastErrorMsg (void)
Ta procedura zwraca tekst w języku angielskim opisujący ostatnie nieudane zapytanie SQLite.
6
public int SQLite3::changes (void)
Ta procedura zwraca liczbę wierszy bazy danych, które zostały zaktualizowane, wstawione lub usunięte przez najnowszą instrukcję SQL.
7
public bool SQLite3::close (void)
Ta procedura zamyka połączenie z bazą danych poprzednio otwarte przez wywołanie SQLite3::open().
8
public string SQLite3::escapeString (string $value)
Ta procedura zwraca ciąg znaków, który został poprawnie zmieniony w celu bezpiecznego włączenia do instrukcji SQL.

Połącz się z bazą danych

Poniższy kod PHP pokazuje, jak połączyć się z istniejącą bazą danych. Jeśli baza danych nie istnieje, zostanie utworzona i ostatecznie obiekt bazy danych zostanie zwrócony.
<?php
   class MyDB extends SQLite3 {
      function __construct() {
         $this->open('test.db');
      }
   }
   $db = new MyDB();
   if(!$db) {
      echo $db->lastErrorMsg();
   } else {
      echo "Bazę danych otwarto pomyślnie\n";
   }
?>
Teraz uruchom powyższy program, aby utworzyć bazę danych test.db w bieżącym katalogu. Możesz zmienić ścieżkę zgodnie z wymaganiami. Jeśli baza danych zostanie pomyślnie utworzona, wyświetli następujący komunikat:
Bazę danych otwarto pomyślnie

Utwórzenie tabeli

Poniższy program PHP zostanie użyty do utworzenia tabeli w poprzednio utworzonej bazie danych.
<?php
class TabelaSQLite extends SQLite3 {
    function __construct() {
        $this->open('test.db');
    }
}
$db = new TabelaSQLite();
if(!$db) {
    echo $db->lastErrorMsg();
} else {
    echo "Bazę danych otwarto pomyślnie\n";
}

$sql =<<<EOF
      CREATE TABLE PRACOWNIK
      (ID INT PRIMARY KEY     NOT NULL,
      NAZWISKO        TEXT    NOT NULL,
      WIEK            INT     NOT NULL,
      ADRES           CHAR(50),
      PENSJA          REAL);
EOF;

$ret = $db->exec($sql);
if(!$ret){
    echo $db->lastErrorMsg();
} else {
    echo "Tabela została utworzona pomyślnie\n";
}
$db->close();
?>
Po wykonaniu powyższego programu utworzy tabelę PRACOWNIK w bazie danych test.db i wyświetli następujące komunikaty -
Bazę danych otwarto pomyslnie
Tabela została utworzona pomyslnie

Dodawanie rekordów

Poniższy program PHP pokazuje, jak tworzyć rekordy w tabeli PRACOWNIK utworzonej w powyższym przykładzie.
<?php
class DodawanieRekordow extends SQLite3 {
    function __construct() {
        $this->open('test.db');
    }
}

$db = new DodawanieRekordow();
if(!$db){
    echo $db->lastErrorMsg();
} else {
    echo "Bazę danych otwarto pomyślnie\n";
}

$sql =<<<EOF
      INSERT INTO PRACOWNIK (ID,NAZWISKO,WIEK,ADRES,PENSJA)
      VALUES (1, 'Paweł', 32, 'Warszawa', 2000.00  );
     
      INSERT INTO PRACOWNIK (ID,NAZWISKO,WIEK,ADRES,PENSJA)
      VALUES (2, 'Adam', 25, 'Wołomin', 1500.00  );
     
      INSERT INTO PRACOWNIK (ID,NAZWISKO,WIEK,ADRES,PENSJA)
      VALUES (3, 'Tadeusz', 23, 'Ząbki', 2000.00  );
     
      INSERT INTO PRACOWNIK (ID,NAZWISKO,WIEK,ADRES,PENSJA)
      VALUES (4, 'Marek', 25, 'Tarchomin', 6500.00  );
EOF;

$ret = $db->exec($sql);
if(!$ret) {
    echo $db->lastErrorMsg();
} else {
    echo "Rekordy zostały dodane pomyślnie\n";
}
$db->close();
?>
Po wykonaniu powyższego programu utworzy on podane rekordy w tabeli PRACOWNIK i wyświetli następujące dwa wiersze.
Bazę danych otwarto pomyślnie
Rekordy zostały dodane pomyślnie

Wyświetlanie rekordów

Poniższy program PHP pokazuje, jak pobrać i wyświetlić rekordy z tabeli PRACOWNIK utworzonej w powyższym przykładzie -
<?php
class WyswietlanieRekordow extends SQLite3 {
    function __construct() {
        $this->open('test.db');
    }
}

$db = new WyswietlanieRekordow();
if(!$db) {
    echo $db->lastErrorMsg();
} else {
    echo "Bazę danych otwarto pomyślnie\n";
    echo "<br>";
}

$sql =<<<EOF
      SELECT * from PRACOWNIK;
EOF;

$ret = $db->query($sql);
while($row = $ret->fetchArray(SQLITE3_ASSOC) ) {
    echo "id = ". $row['ID'] . "\n";
    echo "nazwisko = ". $row['NAZWISKO'] ."\n";
    echo "adres = ". $row['ADRES'] ."\n";
    echo "pensja = ".$row['PENSJA'] ."\n\n";
    echo "<br>";
}
echo "Operacja została wykonana pomyślnie\n";
$db->close();
?>
Gdy powyższy program zostanie wykonany, wygeneruje następujący wynik.
Bazę danych otwarto pomyślnie
id = 1 nazwisko = Paweł adres = Warszawa pensja = 2000
id = 2 nazwisko = Adam adres = Wołomin pensja = 1500
id = 3 nazwisko = Tadeusz adres = Ząbki pensja = 2000
id = 4 nazwisko = Marek adres = Tarchomin pensja = 6500
Operacja została wykonana pomyślnie

Aktualizacja rekordów

Poniższy kod PHP pokazuje, jak użyć instrukcji UPDATE, aby zaktualizować dowolny rekord, a następnie pobrać i wyświetlić zaktualizowane rekordy z tabeli PRACOWNIK.
<?php
class aktualizacjaRekordow extends SQLite3 {
    function __construct() {
        $this->open('test.db');
    }
}

$db = new aktualizacjaRekordow();
if(!$db) {
    echo $db->lastErrorMsg();
} else {
    echo "Bazę danych otwarto pomyślnie\n";
    echo "<br>";
}
$sql =<<<EOF
      UPDATE PRACOWNIK set PENSJA = 2500.00 where ID=1;
EOF;
$ret = $db->exec($sql);
if(!$ret) {
    echo $db->lastErrorMsg();
} else {
    echo $db->changes(), "Rekord został pomyślnie zaktualizowany\n";
    echo "<br>";
}

$sql =<<<EOF
      SELECT * from PRACOWNIK;
EOF;

$ret = $db->query($sql);
while($row = $ret->fetchArray(SQLITE3_ASSOC) ) {
    echo "id = ". $row['ID'] . "\n";
    echo "nazwisko = ". $row['NAZWISKO'] ."\n";
    echo "adres = ". $row['ADRES'] ."\n";
    echo "pensja = ".$row['PENSJA'] ."\n\n";
    echo "<br>";
}
echo "Operacja została wykonana pomyślnie\n";
$db->close();
?>
Gdy powyższy program zostanie wykonany, wygeneruje następujący wynik.
Bazę danych otwarto pomyślnie
1 Rekord został pomyślnie zaktualizowany
id = 1 nazwisko = Paweł adres = Warszawa pensja = 2500
id = 2 nazwisko = Adam adres = Wołomin pensja = 1500
id = 3 nazwisko = Tadeusz adres = Ząbki pensja = 2000
id = 4 nazwisko = Marek adres = Tarchomin pensja = 6500
Operacja została wykonana pomyślnie

Usuwanie rekordów

Poniższy kod PHP pokazuje, jak używać instrukcji DELETE, aby usunąć dowolny rekord, a następnie pobrać i wyświetlić pozostałe rekordy z tabeli PRACOWNIK.
<?php
class UsuwanieRekordow extends SQLite3 {
    function __construct() {
        $this->open('test.db');
    }
}

$db = new UsuwanieRekordow();
if(!$db) {
    echo $db->lastErrorMsg();
} else {
    echo "Bazę danych otwarto pomyślnie\n";
    echo "<br>";
}
$sql =<<<EOF
      DELETE from PRACOWNIK where ID = 2;
EOF;

$ret = $db->exec($sql);
if(!$ret){
    echo $db->lastErrorMsg();
} else {
    echo $db->changes(), " Rekord został pomyślnie usunięty\n";
    echo "<br>";
}

$sql =<<<EOF
      SELECT * from PRACOWNIK;
EOF;
$ret = $db->query($sql);
while($row = $ret->fetchArray(SQLITE3_ASSOC) ) {
    echo "id = ". $row['ID'] . "\n";
    echo "nazwisko = ". $row['NAZWISKO'] ."\n";
    echo "adres = ". $row['ADRES'] ."\n";
    echo "pensja = ".$row['PENSJA'] ."\n\n";
    echo "<br>";
}
echo "Operacja została wykonana pomyślnie\n";
$db->close();
?>
Gdy powyższy program zostanie wykonany, wygeneruje następujący wynik.
Bazę danych otwarto pomyślnie
1 Rekord został pomyślnie usunięty
id = 1 nazwisko = Paweł adres = Warszawa pensja = 2500
id = 3 nazwisko = Tadeusz adres = Ząbki pensja = 2000
id = 4 nazwisko = Marek adres = Tarchomin pensja = 6500
Operacja została wykonana pomyślnie


Brak komentarzy:

Prześlij komentarz