Recherche…


Interrogation d'une base de données

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

Voir aussi http://www.riptutorial.com/topic/184

Récupérer un seul résultat

Outre l'utilisation des instructions SQL LIMIT, vous pouvez également utiliser la fonction SQLite3 querySingle pour extraire une seule ligne ou la première colonne.

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

Didacticiel de démarrage rapide SQLite3

Ceci est un exemple complet de toutes les API SQLite fréquemment utilisées. Le but est de vous mettre au travail très vite. Vous pouvez également obtenir un fichier PHP exécutable de ce tutoriel.

Créer / ouvrir une base de données

Créons d'abord une nouvelle base de données. Créez-le uniquement si le fichier n'existe pas et ouvrez-le pour lire / écrire. L'extension du fichier dépend de vous, mais .sqlite est assez courant et explicite.

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

Créer une table

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

Insérer des exemples de données.

Il est conseillé d’emballer les requêtes associées dans une transaction (avec les mots-clés BEGIN et COMMIT ), même si l’importance de l’atome ne vous intéresse pas. Si vous ne le faites pas, SQLite encapsule automatiquement chaque requête dans une transaction, ce qui ralentit considérablement tout. Si vous êtes nouveau sur SQLite, vous pourriez être surpris de savoir pourquoi les INSERT sont si lents .

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

Insérez des données potentiellement dangereuses avec une instruction préparée. Vous pouvez le faire avec les paramètres nommés :

$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

Récupération des données

Prenons les visites d'aujourd'hui de l'utilisateur # 42. Nous utiliserons à nouveau une instruction préparée, mais cette fois avec des paramètres numérotés , plus concis:

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

Remarque: S'il n'y a plus de lignes, fetchArray () renvoie false . Vous pouvez profiter de cela dans un while boucle.

Libérez la mémoire - ceci ne se fait pas automatiquement, alors que votre script est en cours d'exécution

$result->finalize();

Sténographie

Voici un raccourci utile pour récupérer une seule ligne en tant que tableau associatif. Le deuxième paramètre signifie que nous voulons toutes les colonnes sélectionnées.

Attention, cet raccourci ne supporte pas la liaison de paramètres, mais vous pouvez échapper les chaînes à la place. Toujours mettre les valeurs en citations SINGLE! Les guillemets doubles sont utilisés pour les noms de table et de colonne (similaires aux raccourcis de 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";

Un autre raccourci utile pour récupérer une seule valeur.

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

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

Nettoyer

Enfin, fermez la base de données. Cela se fait automatiquement à la fin du script.

$db->close();


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow