Home
Accueil
Downloads
Téléchargements
Forums
Forums
Your Account
Votre compte
Menu
· Accueil ·

· Communication ·
  · Forums
  · Messages privés
  · Contactez nous
  · Recommendez nous
  · Sondages
  · Les projets

· Nouvelles ·Stats
  · Sujets
  · Ecrire un article
  · Articles archivés
  · Articles RSS
  · Lettre de sécurité
  · Archive de lettres

· Téléchargements ·
  · Accueil
  · Nouveautés
  · Mises à jour
  · Thêmes

· Outils ·
  · Outils divers
  · Convertisseur de temps
  · Table de caractères
  · Générateur de boutons
  · Compresseur Javascript

· Documentation ·
  · Wiki
  · Questions/Réponses
  · Documents
  · Manuel PHP-Nuke
  · Manuel PHP
  · Manuel PEAR
  · Encyclopédies

· Liens ·
  · Nos liens
  · Nos fluxs RSS
  · Partenaires
  · Votre publicité
  · Sitemap
  · Mes bannières

· Infos ·
  · Rechercher
  · Votre compte
  · Liste des membres
  · Carte des membres
  · Top

· Divers ·
  · Météo
  · Galeries
  · Statistiques Phpnuke
  · MS Analysis


Introduction - Exécution

Introduction - Exécution

Introduction - Exécution -- Préparation & Exécution/Exécution multiple

Description

Objectif

prepareQuery() et executeQuery*() vous fournissent plus de puissance et de flexibilité pour l'exécution de vos requête. Vous pouvez les utiliser, si vous devez exécuter plus d'une fois la même requête (i.e. ajout d'adresses dans une base de données) ou si vous voulez supporter différentes bases de données, qui ont une implémentation différente du standard SQL.

Imaginons que vous voulez support deux bases de données possédant une synthaxe différente pour l'INSERT :
db1 : INSERT INTO tbl_name ( col1, col2 ... ) VALUES ( expr1, expr2 ... )
db2 : INSERT INTO tbl_name SET col1=expr1, col2=expr2 ...
Vous pouvez par exemple créer un tableau contenant les requêtes comme ceci :
$statement['db1']['INSERT_PERSON'] = "INSERT INTO person ( surname, name, age ) VALUES ( ?, ?, ? )" ;
$statement['db2']['INSERT_PERSON'] = "INSERT INTO person SET surname=?, name=?, age=?" ;

Préparation

Pour utiliser les fonctionnalités ci-dessus, vous devez effectuer deux étapes. La première est l'utilisation de la méthode prepareQuery, la seconde est l'utilisation de la méthode executeQuery.

Prepare() doit être appelé avec la requête générique au moins une fois. Il retourne un gestionnaire pour cette requête.

La création d'une requête générique est simple. Écrivez la requête SQL, comme d'habitude, i.e.
SELECT surname, name, age FROM person
WHERE name = 'name_to_find' AND age < 'age_limit'
Maintenant, vérifiez quels paramètres doivent être remplacés lors de l'exécution du script. Substituez ces paramètres avec les marqueurs.
SELECT surname, name, age FROM person WHERE name = ? AND age < ?
Et... c'est tout ! Maintenant, vous avez une requête générique, nécessaire pour la méthode prepareQuery() .

prepareQuery() peut gérer des types différents de marqueurs ou de jokers.

? - (recommandé) place d'une valeur scalaire comme une chaîne de caractères ou des nombres, la valeur sera échappée, en fonction de la base de données utilisée.
! - place pour une valeur scalaire et sera insérée dans la requête << tel que >>.
& - nécessite un nom de fichier existant, le contenu de ce fichier sera inclu dans la requête (i.e. pour la sauvegarde des données binaires d'un fichier graphique dans une base de données)

Exécution / Exécution multiple

Après la préparation de la requête, vous pouvez exécuter la requête. Cedci signifie que vous devez assigner les variables à la requête préparée. Pour ce faire, executeQuery() nécessite deux arguments, le gestionnaire de requête de prepareQuery() et un tableau avec les valeurs à assigner. Le tableau doit être numériquement ordonné. La première entrée du tableau représente le premier joker, la seconde, le second joker, etc.
Dans cet exemple, la requête est exécutée quatre fois :
INSERT INTO numbers VALUES( '1', 'one', 'en')
INSERT INTO numbers VALUES( '2', 'two', 'to')
INSERT INTO numbers VALUES( '3', 'three', 'tre')
INSERT INTO numbers VALUES( '4', 'four', 'fire')
executeMultiple() fonctionne de la même façon mais nécessite un tableau à deux dimensions.
Le résultat est le même. Si un des enregistrements échoue, les enregistrements non-terminés ne seront pas exécutés.

Si executeQuery*() échoue, une MDB_Error sera émise, sinon MDB_OK sera retourné.


Manuel PEAR pour PHP-Nuke © www.stefvar.com
Syndiquez notre contenu RSS, Atom, etc..
PHP-Nuke © 2007Reproduction interdite sans autorisation de ma part www.stefvar.com Copyright © 2008Thème iCGstation
Site français de la communauté PragmaMx