Manuel Pear

DB_common::autoPrepare()

DB_common::autoPrepare() --  Prépare une requête INSERT ou UPDATE basée sur les variables fournies

Synopsis

resource autoPrepare (string $table, array $table_fields, integer $mode = DB_AUTOQUERY_INSERT [, string $where = FALSE])

Description

autoPrepare() construit automatiquement une requête INSERT ou UPDATE pour être utilisée par execute() ou executeMultiple().

Paramètres

chaîne de caractères $table

nom de la table

array $table_fields

tableau indéxé contenant les noms de champs

Faites attention à ce que les champs soient assignés à des emplacements ?, sinon, les données que vous passerez dans la fonction execute() seront automatiquement échappées et quotées en accord avec les impératifs du DBMS courant.

entier $mode

type de requête à exécuter (DB_AUTOQUERY_INSERT ou DB_AUTOQUERY_UPDATE)

chaîne de caractères $where

une chaîne de caractères qui doit être utilisée dans la clause WHERE. Ceci est utilisé uniquement lorsque $mode vaut DB_AUTOQUERY_UPDATE. La chaîne est introduite directement dans la requête, donc, vous devez litéralement l'échapper et la quoter en accord avec les impératifs du DBMS courant.

Valeur retournée

resource - ressource utilisée pour la requête ou un objet DB_Error en cas d'échec.

Valeurs renvoyées

Tableau 39-1. Valeurs PEAR_Error possibles

Code erreur Message erreur Raison Solution
DB_ERROR_NEED_MORE_DATA insufficient data supplied Le tableau qui doit contenir les noms de champs est vide. Vérifiez et corrigez votre tableau de noms de champs.
DB_ERROR_SYNTAX syntax error Vous utilisez un mode inconnu. Les modes disponibles sont uniquement DB_AUTOQUERY_INSERT pour les requêtes INSERT ou DB_AUTOQUERY_UPDATE pour les requêtes UPDATE.
DB_ERROR_NODBSELECTED no database selected Aucune base de données n'a été sélectionnée. Vérifiez le DSN dans connect().
tout autre code erreur   Erreur spécifique à la base de données. Vérifiez la section spécifique à la base de données dans le manuel PHP pour trouver la raison de cette erreur.

Note

Cette fonction ne peut pas être appelée de façon statique.

Exemple

Exemple 39-1. Utilisation de autoPrepare() en mode insertion

  1. <?php
  2. // En supposant que vous avez un objet DB valide nomme $db...
  3. $table_name = 'user';  
  4. $table_fields = array('name', 'country');  
  5. $table_values = array('Zoe', 'France');  
  6.  
  7. $sth = $db->autoPrepare($table_name, $table_fields, 
  8.                   DB_AUTOQUERY_INSERT);  
  9.  
  10. if (PEAR::isError($sth)) { 
  11.    die($sth->getMessage());  
  12. }  
  13.  
  14. $res =& $db->execute($sth, $table_values);  
  15.  
  16. if (PEAR::isError($res)) { 
  17.    die($res->getMessage());  
  18. }  
  19.  
  20. ?> 

Exemple 39-2. Utilisation de autoPrepare() en mode de mise à jour

  1. <?php
  2. // En supposant que vous avez un objet DB valide nomme $db...
  3. $table_name = 'user';  
  4. $table_fields = array('name', 'country');  
  5. $table_values = array('Bob', 'USA');  
  6.  
  7. $sth = $db->autoPrepare($table_name, $table_fields, 
  8.                   DB_AUTOQUERY_UPDATE, "country = 'Japan'");  
  9.  
  10. if (PEAR::isError($sth)) { 
  11.    die($sth->getMessage());  
  12. }  
  13.  
  14. $res =& $db->execute($sth, $table_values);  
  15.  
  16. if (PEAR::isError($res)) { 
  17.    die($res->getMessage());  
  18. }  
  19.  
  20. ?> 

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Bretagne - php - Moto - Kit graphique