resource autoPrepare (
string $table
,
array $table_fields
,
integer $mode =
= DB_AUTOQUERY_INSERT
,
string $where
= = false
)
autoPrepare() construit automatiquement une requête INSERT ou UPDATE pour être utilisée par execute() ou executeMultiple().
nom de la table
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.
type de requête à exécuter (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.
resource - ressource utilisée pour la requête ou un objet DB_Error en cas d'échec.
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. |
This function can not be called statically.
Utilisation de autoPrepare() en mode insertion
<?php
// En supposant que vous avez un objet DB valide nomme $db...
$table_name = 'user';
$table_fields = array('name', 'country');
$table_values = array('Zoe', 'France');
$sth = $db->autoPrepare($table_name, $table_fields,
DB_AUTOQUERY_INSERT);
if (PEAR::isError($sth)) {
die($sth->getMessage());
}
$res =& $db->execute($sth, $table_values);
if (PEAR::isError($res)) {
die($res->getMessage());
}
?>
Utilisation de autoPrepare() en mode de mise à jour
<?php
// En supposant que vous avez un objet DB valide nomme $db...
$table_name = 'user';
$table_fields = array('name', 'country');
$table_values = array('Bob', 'USA');
$sth = $db->autoPrepare($table_name, $table_fields,
DB_AUTOQUERY_UPDATE, "country = 'Japan'");
if (PEAR::isError($sth)) {
die($sth->getMessage());
}
$res =& $db->execute($sth, $table_values);
if (PEAR::isError($res)) {
die($res->getMessage());
}
?>