Créer et utiliser une table SQLite en PHP

Nous avons vu comment installer SQL et créer une base de données. Le premier pas, obligatoire, pour utiliser cette base de donnée est de créer une table définissant quels champs de données composeront notre base.

Ce code est mis à jour pour SQLite 3.

Créer une table

La table que nous allons créer sera basée sur la table "posts" de Wordpress, en version simplifiée mais avec les mêmes colonnes.

$dbname='base';
$mytable ="tablename";

if(!class_exists('SQLite3'))
  die("SQLite 3 NOT supported.");

$base=new SQLite3($dbname, 0666); 

$query = "CREATE TABLE $mytable(
            ID bigint(20) NOT NULL PRIMARY KEY,
            post_author bigint(20) NOT NULL,            
            post_date datetime,
            post_content longtext,
            post_title text,
            guid VARCHAR(255)            
            )";
            
$results = $base->exec($query);

La requête CREATE TABLE de SQL définit les colonnes. Elle est envoyée au gestionnaire SQLite par la méthode queryExec() qui retourne true ou false, selon que l'opération réussit ou non.

Voir le code du script create-table.php.

Supprimer une table

L'effacement d'une table se fait par la commande DROP TABLE de SQL.

$query = "DROP TABLE $mytable";
$results = $base->exec($query);

Voir le code de delete-table.php.

Ajouter des billets

La table des billets que nous venons de créer sera remplie, comme pour Wordpress, avec les billets que l'on écrira, chaque billet correspondant à une ligne de la table.

La commande SQL: INSERT INTO permet d'insérer les données du billet.

$number = 1;
$title="Mon dernier billet";
$content="Le texte de mon article...";
$date = strftime( "%b %d %Y %H:%M", time());
$author=1;
$url = "https://www.scriptol.fr/sql/tutoriel-sqlite.php";

$query = "INSERT INTO $mytable(ID, post_title, post_content, post_author, post_date, guid) 
                VALUES ('$number', '$title', '$content', '$author', '$date', '$url')";
$results = $base->exec($query);

Pour les besoins du tutoriel, nous plaçons le contenu du billet directement dans des variables. Dans la pratique ces variables seront assignée à partir d'un éditeur de texte en ligne ou local, comme montré dans le tutoriel CMS.

L'auteur est représenté par le numéro 1 parce que Wordpress ne place pas les noms dans la table posts mais dans une table séparée.

La colonne guid contient l'URL du billet qui sert aussi d'identifieur unique.

La commande INSERT à pour premier paramètre le nom de la table et entre parenthèses la liste des colonnes concernées, puis le paramètre VALUE fournit la liste des valeurs correspondant aux colonnes, dans le même ordre.
Ainsi, post_title, qui contient les titres, aura pour valeur $title, variable à laquelle on a assigné le titre du billet.

La même méthode queryExec sert à envoyer la requête.

Code source du script sqlite-write.php.

Lire un billet

On accède au contenu de la base avec la commande SELECT.

$query = "SELECT post_title, post_content, post_author, post_date, guid FROM $mytable";
$results = $base->query($query);
$row = $results->fetchArray();

if(count($row)>0)
{
   $title = $row['post_title'];
   $content = $row['post_content']; 
   $user = $row['post_author'];
   $date = $row['post_date'];
   $url = $row['guid'];
}   

On donne à la commande SELECT la liste des colonnes dont on veut le contenu et les lignes seront assignées au tableau $results. En effet, la méthode arrayQuery de PHP retourne un tableau de tableaux, chacun représentant une ligne de la table.
Dans la pratique on utilisera plutôt d'autres commandes que l'on verra ultérieurement pour limiter la consommation en ressources.
On récupére la ligne dans le tableau associatif $arr, qui à les noms des colonnes pour clés, et le contenu pour valeurs.

Code source du script sqlite-read.php.

Téléchargement