PHP Data Objects

Seit der Version PHP 5.1 gibt es in PHP zusätzlich zu den Standardfunktionen von MySQL auch die PHP Data Objects (PDO). Das ist eine PHP-Erweiterung, mit der man sehr schnell in einheitlicher Weise auf verschiedene Datenquellen zugreifen kann. Ähnlich wie beim bekannten und weit verbreiteten Repository PEAR werden dabei die spezifischen Zugriffe auf die verwendete Datenbank durch PDO gekapselt und sind damit transparent. PDO ist aber im Gegensatz zu PEAR eine rein binäre Erweiterung und deshalb auch deutlich schneller. PDO unterstützt zurzeit die Datenbanken MySQL, SQLite, PostgreSQL, MS SQL Server, Oracle, DB2, Firebird und auch ODBC. Dabei braucht allerdings jeder Datenbanktyp seinen spezifischen Treiber, sonst funktioniert es nicht. Eine Datenbankverbindung kann man über PDO mit folgendem Code öffnen, die Daten auslesen und listen und dann wieder schließen: $db = new PDO('mysql:host=localhost;dbname=meinedatenbank‘, 'user‘, 'passwort‘); $sql = $db->prepare("SELECT * FROM meinetabelle“); $sql->execute(); while ($row = $sql->fetch()) { echo $row[id].” “.$row[name].“ <br /> “; } $sql 0 NULL; $db = NULL; Das kurze Beispiel-Script öffnet eine Verbindung zur MySQL-Datenbank meinedatenbank, liest alle Daten aus der Tabelle meinetabelle aus und listet dann die Datenfelder id und name aus jedem Datensatz auf. Danach wird die Datenbankverbindung sauber geschlossen. Die Erweiterung PDO gestattet auch die Arbeit mit Prepared Statements, also vorkompilierten SQL-Kommandos. [...]

2010-05-20T18:39:36+02:00Juni 27th, 2010|Allgemein|Kommentare deaktiviert für PHP Data Objects

Die platzsparende Speicherung von IP-Adressen mit MySQL und PHP

Es ist eine ziemlich unbekannte Funktion von MySQL, die es erlaubt, IP-Adressen nicht wie üblich als VARCHAR(15), sondern als UNSIGNED INT(10) in der Datenbanktabelle abzuspeichern und natürlich auch wieder zurück in eine IP-Adresse zu verwandeln. Da VARCHAR(15) 16 Bytes verbraucht und der 4-Byte-Long nur 4 Bytes, braucht man damit nur ein Viertel des Speicherplatzes. Die dazu nötigen MySQL-Funktionen sind INET_ATON() und INET_NTOA(). Wenn Sie den Befehl SELECT INET_ATON(„127.0.0.1“), INET_NTOA(2130706433) an MySQL schicken, werden sie als Resultate 2130706433 und 127.0.0.1 zurückbekommen. In dieser rein numerischen Notation lassen sich zum Beispiel bestimmte Ranges von IP-Adressen wesentlich einfacher überprüfen als mit den IP-Adressen: SELECT `feld` FROM `tabelle` WHERE `ip`&lt; = INET_ATON('192.168.254.1') AND `ip`&gt; = INET_ATON('192.168.254.254'); Dieser Befehl zeigt alle gespeicherten IP-Adressen zwischen 192.168.254.1 und 192.168.254.254. Es gibt auch zwei entsprechende PHP-Funktionen, die genauso funktionieren. Mit ip2long() und long2ip() übernimmt PHP die entsprechende Umwandlung, so dass auch ohne MySQL das wesentlich einfachere Scannen von IP-Ranges möglich ist.

2010-05-20T10:00:07+02:00Juni 15th, 2010|Allgemein|1 Kommentar

MySQL: Auto-Increment-Werte verändern

Wenn Sie schon mit MySQL-Datenbanken gearbeitet haben, wissen Sie, dass man schon bei einer kleinen Datenbanklösung meist nicht an einem Primärschlüssel in den Tabellen vorbei kommt, und sei es nur aus Geschwindigkeitsgründen. Manchmal ist es ein Feld, das von der Anwendung nicht gebraucht wird, häufiger aber ein ID-Feld, das bei einer Rechnungstabelle die Rechnungsnummer oder bei einer Kundentabelle die Kundennummer enthält. Gemeinsam haben diese Felder, dass es Integer-Feldtypen sind und dass durch die Auto-Increment-Funktion, die man bei der Erstellung der Tabelle als Extra angibt, bei der Anlage jedes neuen Datensatzes das Auto-Increment-Feld um 1 erhöht und automatisch eingetragen wird. Manchmal gibt es aber Gründe, die interne ID-Nummer, die MySQL abgespeichert hat, zu verändern, um einen Sprung in die IDs einzubauen. Nehmen wir ein Beispiel zum Schmunzeln, das aber häufiger vorkommt: Wenn Ihr Kunde mit der von Ihnen erstellten PHP/MySQL-Lösung zur Rechnungsstellung beginnt, möchte er nicht, dass die erste Rechnungsnummer die 1 ist, weil er sich damit als Neuling im Geschäft oder als kleine Firma zu outen glaubt. Ein anderer Grund wäre zum Beispiel, wenn die ersten vier Stellen der Rechnungsnummer oder Kundennummer das Kalenderjahr der Anlage angeben sollen und nur der Rest der Rechnungsnummer eine laufende Nummer sein soll. Dann kommt nach der Rechnung Nr. 200912345 [...]

2010-05-20T09:55:12+02:00Mai 31st, 2010|Allgemein|Kommentare deaktiviert für MySQL: Auto-Increment-Werte verändern

Drupal – ein CMS für Community-Websites

Drupal ist zwar ein weit verbreitetes CMS, hat seine Stärken aber nicht unbedingt im Content-Management. Das System ist eher für das Erstellen und Pflegen auch größerer Communities ausgelegt und diesen Bereich deckt es sehr gut ab. Drupal bietet dazu ein ausgefeiltes Benutzer-Management und viele Module wie Blogs und Foren als interaktive Bestandteile. Die Architektur von Drupal ist für Content Management Systeme typisch. Man kann das Kernsystem mit zusätzlichen Modulen erweitern, um die gewünschten oder benötigten Zusatzfunktionen zu realisieren. DieSchnittstelle ( API) zur Integration von solchen Modulen ist bei Drupal gut dokumentiert und im Internet wird eine Unzahl von Erweiterungen für das CMS angeboten. Das Aussehen der erstellten Seiten, also Design und Layout, wird von einem Template-System gesteuert. Auch diese Templates (auch Skins oder Designs genannt) zu Drupal findet man in großer Zahl im Internet. Zum Ablaufen braucht Drupal auf dem Server PHP in der Version 4.3.5 oder höher und als Datenbank MySQL oder PostgreSQL. Wenn die Apache-Komponente mod_rewrite zur Verfügung steht, unterstützt Drupal auch die Verwendung von suchmaschinenfreundliche URLs. Für einige Funktionen des CMS werden noch weitere Komponenten nötig, zum Beispiel das meist sowieso eingebundene XML-Modul von PHP für das Blogger-API oder die RSS-Syndication. Vor dem Installieren muss auf dem Server eine Datenbank für Drupal mit [...]

2010-04-27T07:35:01+02:00Mai 1st, 2010|Allgemein|Kommentare deaktiviert für Drupal – ein CMS für Community-Websites
Nach oben