Beim Zugriff auf eine Datenbank sollte man mit PHP immer auf PDO (PHP Data Objects) zurückgreifen. Durch diese Abstraktionsstufe ist das Datenbank-System später einfacher austauschbar und Prepared Statements lassen sich auch ganz leicht realisieren. Hierzu ein exemplarischer Beispielcode.
Code:
database.sql
1 2 3 4 5 6 7 8 9 10 11 12 13 | DROP DATABASE IF EXISTS `dailydjango`; CREATE DATABASE `dailydjango` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; USE `dailydjango`; CREATE TABLE IF NOT EXISTS `feed_entries` ( `id` INT(10) NOT NULL AUTO_INCREMENT ,`pubdate` DATETIME NOT NULL ,`title` VARCHAR(255) NOT NULL ,`link` VARCHAR(255) NOT NULL ,PRIMARY KEY(`id`) ,UNIQUE KEY(`link`) ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci; |
code.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | $HOST = 'localhost'; $DB = 'dailydjango'; $USER = 'root'; $PASS = ''; $TABLE = 'feed_entries'; // Test-Daten $test_pubdate = '2011-05-01 21:30:45'; $test_title = 'Ein Titel'; $test_link = 'https://www.bennyn.de/'; // MySQL-Eintrag try { $con = new PDO("mysql:host=$HOST;dbname=$DB", $USER, $PASS); $sql = "INSERT INTO $TABLE(id,pubdate,title,link) VALUES(NULL,:pubdate,:title,:link)"; $stmt = $con->prepare($sql); $stmt->bindParam(':pubdate',$test_pubdate); $stmt->bindParam(':title',$test_title); $stmt->bindParam(':link',$test_link); $stmt->execute(); $stmt = null; $con = null; } catch(PDOException $ex) { echo $ex->getMessage(); } // MySQL-Abfrage try { $con = new PDO("mysql:host=$HOST;dbname=$DB", $USER, $PASS); $sql = "SELECT * FROM $TABLE"; foreach($con->query($sql) as $record) { print $record['id'].' '; print $record['pubdate'].' '; print $record['title'].' '; print $record['link']."\n"; } $con = null; } catch(PDOException $ex) { echo $ex->getMessage(); } |
Hinweis: Die Datenbank-Verbindung sollte nicht immer bei jeder Datenbank-Anfrage neu aufgebaut und abgebaut werden.