sqlite_exec

SQLiteDatabase::exec

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.3)

sqlite_exec -- SQLiteDatabase::exec Exécute une requête sans résultats sur une base de données

Description

sqlite_exec ( resource $dbhandle , string $query [, string &$error_msg ] ) : bool
sqlite_exec ( string $query , resource $dbhandle ) : bool

Style orienté objet (méthode) :

public SQLiteDatabase::queryExec ( string $query [, string &$error_msg ] ) : bool

sqlite_exec() exécute une requête SQL query sur une base de données spécifiée par la ressource dbhandle.

Avertissement

SQLite doit exécuter de multiples requêtes séparées par des points-virgules ; vous pouvez donc l'utiliser pour exécuter un script SQL que vous avez chargé depuis un fichier ou que vous avez intégré dans un script.

Liste de paramètres

dbhandle

La ressource de base de données SQLite; retournée par sqlite_open() lorsque utilisée de manière procédurale. Ce paramètre n'est pas requis si vous utilisez la méthode orientée objet.

query

La requête à être exécutée.

Les données contenues dans la requête doivent être échappées.

error_msg

La variable spécifiée sera remplie si une erreur se produit. Ceci est important car les erreurs de syntaxes SQL ne peuvent être récupérées en utilisant la fonction sqlite_last_error().

Note: Deux syntaxes alternatives sont supportées pour assurer la compatibilité avec les autres bases de données (telles que MySQL) : la forme recommandée est la première, où le paramètre dbhandle est le premier dans la fonction.

Valeurs de retour

Cette fonction retourne un résultat booléen; TRUE en cas de succès, FALSE en cas d'erreur. Si vous avez besoin d'exécuter une requête qui doit retourner des lignes, reportez-vous à la fonction sqlite_query().

Les noms de colonnes retournés par SQLITE_ASSOC et SQLITE_BOTH suivent les règles concernant la case définie par l'option de configuration sqlite.assoc_case.

Historique

Version Description
5.1.0 Ajout du paramètre error_msg

Exemples

Exemple #1 Style procédural

<?php
$dbhandle 
sqlite_open('mysqlitedb');
$query sqlite_exec($dbhandle"UPDATE users SET email='jDoe@example.com' WHERE username='jDoe'"$error);
if (!
$query) {
    exit(
"Erreur dans la requête : '$error'");
} else {
    echo 
'Nombre de lignes modifiées : 'sqlite_changes($dbhandle);
}
?>

Exemple #2 Style orienté objet

<?php
$dbhandle 
= new SQLiteDatabase('mysqlitedb');
$query $dbhandle->exec("UPDATE users SET email='jDoe@example.com' WHERE username='jDoe'"$error);
if (!
$query) {
    exit(
"Erreur dans la requête : '$error'");
} else {
    echo 
'Nombre de lignes modifiées : '$dbhandle->changes();
}
?>

Voir aussi

add a note add a note

User Contributed Notes 2 notes

up
1
nonproffessional at clockworkgeek dot com
16 years ago
Just to point out that "CREATE TABLE IF NOT EXISTS" is only supported in SQLite version 3.3.0 or above. And PHP (currently 5.2.5) only comes with SQLite version 2.1.

Executing a create table like this will throw an error as will creating a table that already exists. Instead execute a normal "CREATE TABLE" command and catch it with "try {..} catch".
up
0
rrf5000 at psu dot edu
17 years ago
If you run a multiline SQL command (an INSERT, for example), and there is a SQL error in any of the lines, this function will recognize the error and return FALSE.  However, any correct commands before the one with the error will still execute.  Additionally, if you run changes() after such an incident, it will report that 0 rows have been changed, even though there were rows added to the table by the successful commands.

An example would be:

<?php

// create new database (OO interface)
$dbo = new SQLiteDatabase("db/database.sqlite");

// create table foo
$dbo->query("CREATE TABLE foo(id INTEGER PRIMARY KEY, name CHAR(255));");

// insert sample data
$ins_query = "INSERT INTO foo (name) VALUES ('Ilia1');
INSERT INTO foo (name) VALUES('Ilia2');
INSECT INTO foo (name) VALUES('Ilia3');"
;
$dbo->queryExec($ins_query);

// get number of rows changed
$changes = $dbo->changes();
echo
"<br />Rows changed:  $changes<br />";

// Get and show inputted data
$tableArray = $dbo->arrayQuery("SELECT * FROM foo;");
echo
"Table Contents\n";
echo
"<pre>\n";
print_r($tableArray);
echo
"\n</pre>";

?>

The above code should show that 0 rows have been changed, but that there is new data in the table.
To Top