autoPrepare() and
autoExecute()
reduce the need to write boring
INSERT or UPDATE
SQL queries which are difficult to maintain when you
add a field for instance.
Imagine you have a 'user' table with 3 fields
(id, name and country).
You have to write sql queries like:
INSERT INTO table (id, name, country) VALUES (?, ?, ?)
UPDATE table SET id=?, name=?, country=? WHERE ...
If you add a field ('birthYear' for example), you have to rewrite your
queries which is boring and can lead to bugs (if you forget one query for
instance).
autoPrepare
With autoPrepare(), you don't have to write your
insert or update queries. For example:
<?php
// Once you have a valid DB object named $db...
$table_name = 'user';
$table_fields = array('id', 'name', 'country');
$sth = $db->autoPrepare($table_name, $table_fields,
DB_AUTOQUERY_INSERT);
if (DB::isError($sth)) {
die($sth->getMessage());
}
?>
In this example, autoPrepare() will build the following SQL query:
INSERT INTO user (id, name, country) VALUES (?, ?, ?)
<?php
// ... contining from the example above...
$table_values = array(1, 'Fabien', 'France');
$res =& $db->execute($sth, $table_values);
if (DB::isError($res)) {
die($res->getMessage());
}
?>
So, you don't have to write any SQL INSERT
queries! And it works with UPDATE
queries too. For flexibility reasons, you have only to write
the WHERE clause of the query. For instance:
<?php
// Once you have a valid DB object named $db...
$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 (DB::isError($sth)) {
die($sth->getMessage());
}
$res =& $db->execute($sth, $table_values);
if (DB::isError($res)) {
die($res->getMessage());
}
?>