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 - autoPrepare et autoExecute

Introduction - autoPrepare et autoExecute

Introduction - autoPrepare et autoExecute --  Prépare et exécute automatiquement une requête SQL

Description

Objet

autoPrepare() et autoExecute() facilitent votre travail. Avec ces fonctions, vous n'avez plus à écrire ces requêtes laborieuses (INSERT or UPDATE) qui sont difficiles à maintenir lorsque vous ajoutez un champ par exemple.

Imaginez que vous avez une table 'user' avec trois champs (id, name et country). Vous devez écrire vos requêtes de cette façon :
INSERT INTO table (id, name, country) VALUES (?, ?, ?)
UPDATE table SET id=?, name=?, country=? WHERE ...
Si vous ajoutez un champ ('birthYear' par exemple), vous devez réécrire votre requête, ce qui est fastidieux et peut vous faire faire des erreurs (si vous oubliez de changer une requête par exemple).

autoPrepare

Avec autoPrepare(), vous n'avez plus à écrire vos requêtes insert ou update. Par exemple :
<?php
// On suppose que vous avez un objet $db valide...
$table_name   = 'user';
$table_fields = array('id', 'name', 'country');

$sth = $db->autoPrepare($table_name, $table_fields,
                        DB_AUTOQUERY_INSERT);

if (PEAR::isError($sth)) {
    die($sth->getMessage());
}
?>
Dans cet exemple, autoPrepare() va construire la requête suivante:
INSERT INTO user (id, name, country) VALUES (?, ?, ?)
Puis, la fonction prepare() sera appelée.

Pour ajouter de nouveaux enregistrements, vous devez utiliser execute() ou executeMultiple() comme cela :
<?php
// ... en continuit&eacute; avec l'exemple pr&eacute;c&eacute;dent ...
$table_values = array(1, 'Fabien', 'France');

$result =& $db->execute($sth, $table_values);

if (PEAR::isError($result)) {
    die($result->getMessage());
}
?>
Donc, vous n'avez plus à écrire aucune requête INSERT ! Et cela fonctionne avec les requêtes UPDATE aussi. Pour des raisons de flexibilité, il vous reste seulement à écrire la clause WHERE. Par exemple :
<?php
// On suppose que vous avez un objet $db valide...
$table_name   = 'user';
$table_fields = array('name', 'country');
$table_values = array('Bob', 'USA');

$sth = $db->autoPrepare($table_name, $table_fields,
                        DB_AUTOQUERY_UPDATE, 'id = 1');

if (PEAR::isError($sth)) {
    die($sth->getMessage());
}

$result =& $db->execute($sth, $table_values);

if (PEAR::isError($result)) {
    die($result->getMessage());
}
?>
autoPrepare() construira la requête suivante:
UPDATE user SET name=?, country=? WHERE id=1
Puis, appelera prepare() avec cette requête.

Faites attention : si vous ne spécifiez aucune clause WHERE, tous les enregistrements de la table seront mis à jour.

autoExecute

Utiliser autoExecute() est la façon la plus facile de faire des requêtes d'insertion ou de mise à jour. C'est un mélange de autoPrepare() et de execute().

Vous n'avez besoin que d'un tableau associatif (clef => valeur) où les clefs sont les noms des champs et les valeurs sont les valeurs de ces champs. Par exemple:
<?php
// On suppose que vous avez un objet $db valide...
$table_name    = 'user';
$fields_values = array(
    'id'      => 1,
    'name'    => 'Fabien',
    'country' => 'France'
);

$result = $db->autoExecute($table_name, $fields_values,
                           DB_AUTOQUERY_INSERT);

if (PEAR::isError($result)) {
    die($result->getMessage());
}
?>
Et c'est tout ! La requête suivante est construite puis exécutée :
INSERT INTO user (id, name, country)
  VALUES (1, 'Fabien', 'France')
Et c'est la même chose pour les requêtes UPDATE :
<?php
// On suppose que vous avez un objet $db valide...
$table_name    = 'user';
$fields_values = array(
    'name'    => 'Fabien',
    'country' => 'France'
);

$result = $db->autoExecute($table_name, $fields_values,
                           DB_AUTOQUERY_UPDATE, 'id = 1');

if (PEAR::isError($result)) {
    die($result->getMessage());
}
?>
La requête suivante est construite puis exécutée :
UPDATE user SET name='Fabien', country='France'
  WHERE id = 1

Faites attention : si vous ne spécifiez aucune clause WHERE, tous les enregistrements de la table seront mis à jour.

Avertissement

La valeur passée au paramètre $data doit être litéral. Ne soumettez pas des fonctions SQL (par exemple, CURDATE()). Les fonctions SQL qui doivent être exécutées au moment de l'exécution doivent être mises dans une requête préparée.


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