PEAR DB Funktionen
Autor: Vilma Plum
eingetragen: Mittwoch, 24. August 2005 um 12:01 Uhr (34/2005 Kalenderwoche)
geändert: Mittwoch, 24. August 2005 um 12:01 Uhr (34/2005 Kalenderwoche)
Keywords: limitQuery nextId
Kategorien: PHP,
Text:
1. ERROR-Handling bei Nutzung von PEAR:
Es gibt verschiedene Methoden, Fehler über Pear abzufangen. Eine ist die Erstellung einer eigenen error-handling-Funktion. Beispiel siehe unten.
Weitere sind hier zu finden:
http://http://php-mag.net/itr/online_artikel/psecom,id,388,nodeid,...
2. Rückgabe der lastinsertid über DB
DB bietet die Möglichkeit, die lastinsertid auch bei Nutzung verschiedener DB's zu erhalten. Wird bei der Funktion nextId der zweite Parameter nicht übergeben, so versucht DB eine sequenztabelle zu erzeugen. Bei MYSQL funktionierts aber gut mit Parameter FALSE.
3. Limitierte Abfragen in DB
Sind auch über DB zu realisieren. Anfangswert und Anzahl wird bei Abfrage-Aufruf mit übergeben.
Quellcode:
zu 1:
require_once 'PEAR.php';
require_once 'DB.php';
function ownerror_handler(&$obj) {
$msg = $obj->getMessage();
$code = $obj->getCode();
$info = $obj->getUserInfo();
printf('<h2 style=color:#cc0000>%s (%d)</h2>', $msg, $code);
if ($info) {
print 'Debug info: <pre>';
print htmlspecialchars($info);
print "</pre>\n";
}
}
PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, "ownerror_handler");
$connection = DB::connect('mysql://dox_edit:techies@localhost/infosys2');
zu 2:
require_once 'DB.php';
PEAR::setErrorHandling(PEAR_ERROR_DIE, "Error: %s<br />\n");
$db = DB::connect('mysql://dox_edit:techies@localhost/techdox');
/*
#letzte Insert_id als Rueckgabe-Wert
$db->expectError(DB_ERROR_ALREADY_EXISTS);
$err = $db->query("INSERT INTO cats2 VALUES(NULL,?)",array($_GET['name']));
$id=$db->nextId('cats2',false);
echo $id."<br>";
zu 3:
$sql="SELECT * FROM cats ORDER BY cats ASC";
$res=$db->limitQuery($sql, $_GET['from'],5);
while($res->fetchInto($row,DB_FETCHMODE_ASSOC))
{
extract($row);
printf('<a href="pear_test2.php?id=%d">%s</a><br>',$cats_id,$cats);
}