phpundmysql.de

Errata der 1. Auflage

Seite 13: Danksagung
Der Name am Ende der Seite lautet natürlich Gunnar Thies 😉

Buch CD: Praxisteil Index-Datei
Die Index-Datei des Praxisteils auf der CD-ROM hat einige Kürzungs- bzw. Umbenennungs-Aktionen nicht mitbekommen.
Daher folgt hier die korrekte Version: Index-Datei zum Download

Seite 81:

Das Beispiel der Befehle in_array und array_search verwendet fälschlicherweise Bayern anstatt den Identifier Baden-Württemberg.

Seite 181:
Das dritte SQL-Statement in der Aufzählung
name LIKE ‘Joh%’ bedeutet: …
liefert – im Gegensatz zu der Aussage im Text – das korrekte Ergebnis (eine Zeile mit dem Datensatz Johanna) zurück.
Lediglich ohne das Prozentzeichen:
name LIKE ‘Joh’ würde keine Zeile zurück geliefert.

Seite 212:
Unten auf der Seite steht:
Die Klasse mysql_stmt hingegen …;
hier muss natürlich mysqli_stmt stehen.

Seite 214:
In der Aufzählung auf dem oberen Teil der Seite steht als vierter Punkt
die Datenbankbank …
Korrekt wäre natürlich Datenbank.

SQL-Statements auf der Buch-CD
Beim Erstellen der MySQL-Datenbank kann es bei der Tabelle “sessions” zu Problemen kommen. Man sollte statt des auf der CD gespeicherten SQL-Statements folgendes verwenden

CREATE TABLE IF NOT EXISTS `sessions` (
`id` varchar(32) collate latin1_general_ci NOT NULL,
`lastUpdated` int(11) NOT NULL default '0',
`start` int(11) NOT NULL default '0',
`value` varchar(65000) collate latin1_general_ci NOT NULL,
`locked` tinyint(4) NOT NULL default '0',
PRIMARY KEY  (`id`))
ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

Hier wird die Engine MyISAM anstatt MEMORY verwendet und es sollten keine Fehler auftreten!

Buch-CD Listing 13.6: Die Datenbank-Klasse
In der Funktion doLog, die lediglich auf der Buch-CD enthalten ist (und nicht im Buch erläutert wird), wird das in MySQL reservierte Wort “sql” verwendet. Dies führt dazu, dass der Eintrag nicht
in der Datenbank gespeichert wird. Stattdessen sollte eine andere Attributbezeichnung verwendet werden (z.B. sqlQuery)!

$sql = "INSERT INTO logging (sqlQuery,datum,name) VALUES ".
" ('".mysql_escape_string($sqlQuery)."',".
date("H:i   d.m.Y", time()).",'".
$_SESSION['name']."')";

Seite 441 und Buch-CD Listing 14.3 und 14.5: Login
Hier hat sich ein Fehler eingeschlichen: in der Methode checkLoginData() der erweiterten Login-Klasse (Listing 14.5) wird der Befehl session_regenerate_id() verwendet, was an sich korrekt ist. Doch wird im Skript checkLogin.php vor dem Aufruf der Methode der HTML-Kopf und -Body ausgegeben. Dies führt zu einer Fehlermeldung. Korrekt wäre das Aufrufen der Methode, bevor irgendeine Ausgabe erfolgt. Hierzu wird einfach folgender Code in die Datei geschrieben (vor den HTML-Ausgabeblock!):

...
//Login-Objekt erstellen
$LOGIN = new Login();
//LoginDaten hier checken:
$loginOk = $LOGIN->checkLoginData();
...
//ursprüngliche HTML-Ausgaben
...
if($loginOk==true){
...

Hier die komplette Datei des Listings 14.3 zum Download: Listing 14.3