|
|
(Next) Einführung - Portabilität |
||||
| |
|||||
|
|||||
autoPrepare() und autoExecute() verringern den Aufwand langweilige INSERT oder UPDATE-SQL-Abfragen zu schreiben, welche schwer zu pflegen sind, wenn z.B. eine neue Spalte ergänzt wird.
Nehmen wir an, dass Sie eine Tabelle user mit 3 Spalten (id,name und country) benutzen. Dann müssten Sie Anweisungen schreiben wie:
INSERT INTO table (id, name, country) VALUES (?, ?, ?) UPDATE table SET id=?, name=?, country=? WHERE ...
Mit autoPrepare() müssen Sie keine INSERT oder UPDATE-SQL-Abfragen mehr schreiben. Z.B.:
<?php
// Wir haben ein DB-Objekt namens $db...
$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 (?, ?, ?)
Um Datensätze einzufügen, müssen Sie die execute()- oder executeMultiple()-Methode aufrufen:
<?php
// ... contining from the example above...
$table_values = array(1, 'Fabien', 'France');
$res =& $db->execute($sth, $table_values);
if (PEAR::isError($res)) {
die($res->getMessage());
}
?>
<?php
// Wir haben ein DB-Objekt namens $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 (PEAR::isError($sth)) {
die($sth->getMessage());
}
$res =& $db->execute($sth, $table_values);
if (PEAR::isError($res)) {
die($res->getMessage());
}
?>
UPDATE user SET name=?, country=? WHERE id=1
Definieren Sie keine WHERE-Klausel werden alle Datensätze der Tabelle geändert!
autoExecute() ist der schnellste Weg, um INSERT oder UPDATE-Abfragen durchzuführen. Es ist eine Kombination aus autoPrepare() und execute().
Sie benötigen nur ein assoziatives Array (Schlüssel => Wert). Als Schlüssel dienen die Spaltenbezeichnungen und als deren Wert die einzutragenden Werte.
<?php
// Once you have a valid DB object named $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());
}
?>
INSERT INTO user (id, name, country) VALUES (1, 'Fabien', 'France')
Analog laufen UPDATE-Abfragen ab:
<?php
// Wir haben ein DB-Objekt namens $db...
$table_name = 'user';
$fields_values = array(
'name' => 'Fabien',
'country' => 'France'
);
$res = $db->autoExecute($table_name, $fields_values,
DB_AUTOQUERY_UPDATE, 'id = 1');
if (PEAR::isError($res)) {
die($res->getMessage());
}
?>
UPDATE user SET name='Fabien', country='France' WHERE id = 1
Seien Sie vorsichtig! Wenn Sie keine WHERE-Klausel angeben, werden alle Datensätze der Tabelle geändert.
Die übergebene Werte müssen Literale sein. Übergebene Sie keine SQL-Funktionen, wie z.B. CURDATE(). SQL-Funktionen, die zur Laufzeit aufgerufen werden sollen, müssen sich in der zu präparierenden Anfrage befinden.
|
|
(Next) Einführung - Portabilität |
||||||||
| |
|||||||||
|
|||||||||