|
|
(Next) Introduction - Portabilité |
||||
| |
|||||
|
|||||
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 ...
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());
}
?>
INSERT INTO user (id, name, country) VALUES (?, ?, ?)
Pour ajouter de nouveaux enregistrements, vous devez utiliser execute() ou executeMultiple() comme cela :
<?php
// ... en continuité avec l'exemple précédent ...
$table_values = array(1, 'Fabien', 'France');
$result =& $db->execute($sth, $table_values);
if (PEAR::isError($result)) {
die($result->getMessage());
}
?>
<?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());
}
?>
UPDATE user SET name=?, country=? WHERE id=1
Faites attention : si vous ne spécifiez aucune clause WHERE, tous les enregistrements de la table seront mis à jour.
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());
}
?>
INSERT INTO user (id, name, country) VALUES (1, 'Fabien', 'France')
<?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());
}
?>
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.
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.
|
|
(Next) Introduction - Portabilité |
||||||||
| |
|||||||||
|
|||||||||