Datenbank-Zugriff mit PHP und PDO

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.