Поиск и изменение записи в SQLite

Одни и те же функции PHP служат для передачи всех запросов в базу SQLite: exec или query, в зависимости от того, хочешь ли ты инкумулировать или получать данные. Именно содержимое SQL-команды будет меняться в зависимости от того, хочешь ли ты найти запись или изменить ее. А SQL позволяет найти запись разными способами.

За функцией query следует либо цикл, либо простая инструкция $ row = $ results -> fetchArray (); когда возвращается только одна строка таблицы .

Чтобы описать эти команды, мы добавили в свой список два сценария: заполнение базы данных, отображение ее всего содержимого.

Заполнение базы данных

См. сценарий 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']

См. код сценария поиска 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.

См. исходный код для обновления сообщения.

Загрузка