integer autoExecute (
string $table
,
array $fields_values
,
integer $mode =
= DB_AUTOQUERY_INSERT
,
string $where
= = false
)
autoExecute() construit automatiquement une requête INSERT ou UPDATE.
Cette méthode construit des requêtes SQL en utilisant autoPrepare() et les exécutent en utilisant execute().
nom de la table
tableau associatif (clé => valeur), les clés sont les noms des champs et les valeurs sont les valeurs correspondantes à ces champs.
Les valeurs sont automatiquement échappées et quotées en accord avec les impératifs de la DBMS courante.
type de la requête à générer (DB_AUTOQUERY_INSERT ou DB_AUTOQUERY_UPDATE)
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.
Code erreur | Message erreur | Raison | Solution |
---|---|---|---|
DB_ERROR_NEED_MORE_DATA | insufficient data supplied | Votre tableau associatif, qui doit contenir les noms des champs et leurs valeurs, est vide. | Vérifiez et corrigez votre tableau fields_values. |
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. |
This function can not be called statically.
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.
Utilisation de autoExecute() en mode insertion
<?php
// En supposant que vous avez un objet DB valide nomme $db...
$table_name = 'user';
$fields_values = array(
'id' => 1,
'name' => 'Fabien',
'country' => 'France'
);
$res = $db->autoExecute($table_name, $fields_values,
DB_AUTOQUERY_INSERT);
if (PEAR::isError($res)) {
die($res->getMessage());
}
?>
Utilisation de autoExecute() en mode de mise à jour
<?php
// En supposant que vous avez un objet DB valide nomme $db...
$table_name = 'user';
$fields_values = array(
'country' => 'France',
);
$res = $db->autoExecute($table_name, $fields_values,
DB_AUTOQUERY_UPDATE, "country = 'Japan'");
if (PEAR::isError($res)) {
die($res->getMessage());
}
?>