Szukaj…


Zapytanie do bazy danych

<?php
//Create a new SQLite3 object from a database file on the server.
$database = new SQLite3('mysqlitedb.db');

//Query the database with SQL
$results = $database->query('SELECT bar FROM foo');

//Iterate through all of the results, var_dumping them onto the page
while ($row = $results->fetchArray()) {
    var_dump($row);
}
?>

Zobacz także http://www.riptutorial.com/topic/184

Pobieranie tylko jednego wyniku

Oprócz korzystania z instrukcji SQL LIMIT możesz także użyć funkcji SQLite3 querySingle aby pobrać pojedynczy wiersz lub pierwszą kolumnę.

<?php
$database = new SQLite3('mysqlitedb.db');

//Without the optional second parameter set to true, this query would return just
//the first column of the first row of results and be of the same type as columnName
$database->querySingle('SELECT column1Name FROM table WHERE column2Name=1');

//With the optional entire_row parameter, this query would return an array of the
//entire first row of query results.
$database->querySingle('SELECT column1Name, column2Name FROM user WHERE column3Name=1', true);
?>

Samouczek szybkiego startu SQLite3

Jest to kompletny przykład wszystkich powszechnie używanych interfejsów API związanych z SQLite. Celem jest, abyś naprawdę szybko zaczął działać. Możesz również pobrać plik PHP tego samouczka, który można uruchomić.

Tworzenie / otwieranie bazy danych

Najpierw stwórzmy nową bazę danych. Utwórz go tylko wtedy, gdy plik nie istnieje i otwórz go do odczytu / zapisu. Rozszerzenie pliku zależy od Ciebie, ale .sqlite jest dość powszechny i oczywisty.

$db = new SQLite3('analytics.sqlite', SQLITE3_OPEN_CREATE | SQLITE3_OPEN_READWRITE);

Tworzenie stołu

$db->query('CREATE TABLE IF NOT EXISTS "visits" (
    "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
    "user_id" INTEGER,
    "url" VARCHAR,
    "time" DATETIME
)');

Wstawianie przykładowych danych.

Wskazane jest zawijanie powiązanych zapytań w transakcji (słowami kluczowymi BEGIN i COMMIT ), nawet jeśli nie obchodzi Cię atomowość. Jeśli tego nie zrobisz, SQLite automatycznie otacza każde zapytanie w transakcji, co znacznie spowalnia wszystko. Jeśli jesteś nowy w SQLite, możesz być zaskoczony, dlaczego WSTAWKI są tak wolne .

$db->exec('BEGIN');
$db->query('INSERT INTO "visits" ("user_id", "url", "time")
    VALUES (42, "/test", "2017-01-14 10:11:23")');
$db->query('INSERT INTO "visits" ("user_id", "url", "time")
    VALUES (42, "/test2", "2017-01-14 10:11:44")');
$db->exec('COMMIT');

Wstaw potencjalnie niebezpieczne dane z przygotowaną instrukcją. Możesz to zrobić za pomocą nazwanych parametrów :

$statement = $db->prepare('INSERT INTO "visits" ("user_id", "url", "time")
    VALUES (:uid, :url, :time)');
$statement->bindValue(':uid', 1337);
$statement->bindValue(':url', '/test');
$statement->bindValue(':time', date('Y-m-d H:i:s'));
$statement->execute(); you can reuse the statement with different values

Pobieranie danych

Pobierzmy dzisiejsze wizyty użytkownika # 42. Ponownie użyjemy przygotowanej instrukcji, ale tym razem z numerowanymi parametrami , które są bardziej zwięzłe:

$statement = $db->prepare('SELECT * FROM "visits" WHERE "user_id" = ? AND "time" >= ?');
$statement->bindValue(1, 42);
$statement->bindValue(2, '2017-01-14');
$result = $statement->execute();

echo "Get the 1st row as an associative array:\n";
print_r($result->fetchArray(SQLITE3_ASSOC));
echo "\n";

echo "Get the next row as a numeric array:\n";
print_r($result->fetchArray(SQLITE3_NUM));
echo "\n";

Uwaga: Jeśli nie ma już wierszy, funkcja fetchArray () zwraca wartość false . Można wykorzystać to w while pętli.

Zwolnij pamięć - nie dzieje się to automatycznie podczas działania skryptu

$result->finalize();

Stenografia

Oto przydatny skrót do pobierania pojedynczego wiersza jako tablicy asocjacyjnej. Drugi parametr oznacza, że chcemy wszystkie wybrane kolumny.

Uważaj, ten skrót nie obsługuje wiązania parametrów, ale możesz zamiast tego uniknąć znaków. Zawsze umieszczaj wartości w POJEDYNCZYCH cytatach! W nazwach tabel i kolumn używane są podwójne cudzysłowy (podobne do backicks w MySQL).

$query = 'SELECT * FROM "visits" WHERE "url" = \'' .
    SQLite3::escapeString('/test') .
    '\' ORDER BY "id" DESC LIMIT 1';

$lastVisit = $db->querySingle($query, true);

echo "Last visit of '/test':\n";
print_r($lastVisit);
echo "\n";

Kolejny przydatny skrót do pobierania tylko jednej wartości.

$userCount = $db->querySingle('SELECT COUNT(DISTINCT "user_id") FROM "visits"');

echo "User count: $userCount\n";
echo "\n";

Sprzątanie

Na koniec zamknij bazę danych. Odbywa się to jednak automatycznie po zakończeniu skryptu.

$db->close();


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow