Les mêmes fonctions PHP servent à passer toutes les requêtes à la base SQLite: queryExec ou arrayQuery, selon que l'on veut encoyer ou recevoir des données. C'est surtout le contenu de la commande SQL qui changera selon que l'on veut trouver un enregistrement ou le modifier. Et SQL permet de trouver un enregistrement de différentes façons.
Pour pouvoir décrire ces commandes, nous avons ajouté deux scripts à notre liste: remplissage d'une base de donnée, affichage de son contenu entier.
Voir le script SQLite Fill.
Un tableau est créé pour l'exemple contenant une liste d'enregistrements que l'on insère par appels successifs de la commande INSERT, vue dans le chapitre précédent.
Voir le script SQLite Dump.
On exécute la commande SELECT sans condition particulière, avec la commande PHP arrayQuery qui assigne à un tableau les enregistrements trouvés, en l'occurence tout le contenu de la base de données.
On accède à un article dans la base à partir de son identifieur, assigné au champ ID. La requête est celle que nous avons vu pour effectuer une lecture, avec l'addition d'une clause conditionnelle:
WHERE ID = $id
$id étant la variable qui contient l'identifieur du billet. Le code sera donc:
$myid = "2"; $query = "SELECT post_title, post_content, post_author, post_date, guid FROM $mytable WHERE (id=$myid)"; $results = $base->arrayQuery($query, SQLITE_ASSOC);
Voir le script d'accès selon ID.
L'utilisateur ne connaît jamais l'ID d'un enregistrement, il accède à un billet à partir d'une liste, et dans ce cas le gestionnaire sait quel est l'ID du billet, ou il effectue une recherche et dans ce cas le gestionnaire obtient l'ID comme résultat de la recherche. Dans ce second cas la requête comprendra une clause WHERE adaptée à le recherche. L'élément LIKE s'utilise pour trouver une chaîne de caractère dans un champ de la base.
LIKE '%$word%'
La variable $word contient la chaîne que l'on recherche, les symbole % signifie que ce qui précède ou ce qui suit est indéfini. Le code deviendra:
$word = "post 3"; $query = "SELECT ID, post_content FROM $mytable WHERE post_content LIKE '%$word%' "; $results = $base->arrayQuery($query, SQLITE_ASSOC);
La requête concerne les champs ID et post_content, dans la table $mytable, et la condition est que le champ post_content (le contenu du billet), contienne la chaîne assignée à la variable $word.
On récupère ensuite l'ID dans le tableau généré par la fonction arrayQuery.
$arr['ID']
Voir le code du script de recherche d'ID.
On modifie un billet avec une commande qui agit sur le contenu des tables, UPDATE, associée aux éléments SET pour assigner un nouveau contenu et WHERE pour sélectionner le billet.
$myid = "2"; $changed="Nouveau contenu du billet"; $query = "UPDATE $mytable SET post_content = '$changed' WHERE (id=$myid)"; $results = $base->queryexec($query);
Pour l'exemple on assigne directement un ID à la variable $myid et un nouveau contenu à $changed.
La commande UPDATE concerne la table $mytable, où l'on assigne le champ post_content avec le nouveau contenu, et comme précédemment on sélectionne le billet avec la clause WHERE.
Voir le code source de mise à jour d'un billet.