Поиск и изменение записи в SQLite
Одни и те же функции PHP служат для передачи всех запросов в базу SQLite: exec или query, в зависимости от того, хочешь ли ты инкумулировать или получать данные. Именно содержимое SQL-команды будет меняться в зависимости от того, хочешь ли ты найти запись или изменить ее. А SQL позволяет найти запись разными способами.
За функцией query следует либо цикл, либо простая инструкция
возвращается только одна строка таблицы .Чтобы описать эти команды, мы добавили в свой список два сценария: заполнение базы данных, отображение ее всего содержимого.
Заполнение базы данных
См. сценарий SQLite Fill.
Для примера создается таблица со списком записей, вставляемых последовательными вызовами команды INSERT, как показано в предыдущей главе.
Просмотр содержимого базы данных, dump
См. сценарий SQLite Dump.
Команда SELECT выполняется без особых условий с помощью команды PHP arrayQuery, которая присваивает массиву найденные записи, включая все содержимое базы данных.
Доступ к записи
Доступ к элементу в базе осуществляется из его идентификатора, присвоенного полю ID. Запрос - это тот, который мы видели для выполнения чтения, с добавлением условного предложения:
WHERE ID = $id
$ id - переменная, которая содержит идентификатор билета. Таким образом, код будет:
$myid = "2";
$query = "SELECT post_title, post_content, post_author, post_date, guid
FROM $mytable WHERE (id=$myid)";
$results = $base->query($query);
$row = $results->fetchArray();
См. сценарий доступа по идентификатору.
Поиск сообщения
Пользователь никогда не знает ID записи, он обращается к билету из списка, и в этом случае менеджер знает, что такое ID билета, или он выполняет поиск и в этом случае менеджер получает ID в качестве результата поиска. Во втором случае запрос будет включать предложение WHERE, адаптированное для поиска. Элемент LIKE используется для поиска строки символа в поле базы.
LIKE '%$word%'
Переменная $ word содержит искомую строку, символ% означает, что все вышеперечисленное или следующее неопределено. Код станет:
$word = "post 3";
$query = "SELECT ID, post_content FROM $mytable WHERE post_content LIKE '%$word%' ";
$results = $base->query($query);
$row = $results->fetchArray();
Запрос касается полей ID и post_content в таблице $ mytable, и условие заключается в том, что поле post_content (содержимое билета) содержит строку, назначенную переменной $ word.
Затем извлекается идентификатор из массива, созданного функцией arrayQuery.
$row['ID']
Изменение записи
Редактируется пост с помощью команды, которая действует на содержимое таблиц, UPDATE, связана с элементами SET для назначения нового содержимого и WHERE для выбора билета.
$myid = "2";
$changed="Nouveau contenu du billet";
$query = "UPDATE $mytable SET post_content = '$changed' WHERE (id=$myid)";
$results = $base->exec($query);
В качестве примера можно прямо назначить идентификатор переменной $ myid и новое содержимое $ changed.
Команда UPDATE относится к таблице $ mytable, где присваивается поле post_content с новым содержимым, и, как и прежде, выбирается билет с предложением WHERE.
См. исходный код для обновления сообщения.
Загрузка
- Полный исходный код SQLite 2 в ZIP-архиве и исходный код SQLite 3.