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.

Ein Gedanke zu „Datenbank-Zugriff mit PHP und PDO“

  1. Hallo,

    ich bin Anfänger mit PHP und das ist ein sehr interessanter Artikel.
    Meist liest man ja noch den Zugriff mit den alten Methoden auf eine MySql Datenbank.
    Die Datenbank Verbindung sollte also einmal geöffnet werden und dann nach den Transaktionen INSERT/UPDATE/DELETE erst wieder geschlossen werden. Ich habe auch schon Beispiele gesehen da wird für jede Transaktion die Datenbank geöffnet und dann wieder geschlossen. Vieleicht aus Sicherheitsgründen.

    Danke

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.