Поиск…


Запрос базы данных

<?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);
}
?>

См. Также http://www.riptutorial.com/topic/184

Получение только одного результата

В дополнение к использованию операторов LIMIT SQL вы также можете использовать функцию SQLite3 querySingle для извлечения одной строки или первого столбца.

<?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);
?>

Учебник по быстрому старту SQLite3

Это полный пример всех распространенных API-интерфейсов, связанных с SQLite. Цель состоит в том, чтобы заставить вас работать и работать очень быстро. Вы также можете получить исполняемый файл PHP этого урока.

Создание / открытие базы данных

Сначала создадим новую базу данных. Создайте его, только если файл не существует и открыть его для чтения / записи. Расширение файла зависит от вас, но .sqlite довольно распространен и не .sqlite пояснений.

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

Создание таблицы

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

Вставка образцов данных.

Целесообразно обернуть связанные запросы в транзакции (с ключевыми словами BEGIN и COMMIT ), даже если вам не нужна атомарность. Если вы этого не сделаете, SQLite автоматически обматывает каждый запрос в транзакции, что сильно замедляет все. Если вы новичок в SQLite, вы можете быть удивлены, почему INSERT настолько медленны .

$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');

Вставьте потенциально опасные данные с помощью подготовленного оператора. Вы можете сделать это с помощью названных параметров :

$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

Получение данных

Давайте приступим к сегодняшним посещениям пользователя № 42. Мы снова будем использовать подготовленный оператор, но с пронумерованными параметрами на этот раз, которые являются более краткими:

$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";

Примечание. Если строк больше нет, fetchArray () возвращает false . Вы можете воспользоваться этим в while цикл.

Освободите память - это не выполняется автоматически, пока ваш скрипт запущен

$result->finalize();

Shorthands

Вот полезная стенограмма для извлечения одной строки в качестве ассоциативного массива. Второй параметр означает, что мы хотим, чтобы все выбранные столбцы.

Остерегайтесь, эта стенография не поддерживает привязку параметров, но вместо этого вы можете избежать строк. Всегда добавляйте значения в котировки SINGLE! Двойные кавычки используются для имен таблиц и столбцов (аналогично обратным выводам в 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";

Еще одно полезное сокращение для получения только одного значения.

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

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

Убираться

Наконец, закройте базу данных. Это делается автоматически, когда скрипт заканчивается.

$db->close();


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow