%Teilweise Erzeugt mit dem LaTeX-Generator: http://latex.sehnot.de

%Schriftgröße, Layout, Papierformat, Art des Dokumentes
\documentclass[10pt,oneside,a4paper]{scrartcl}

%Einstellungen der Seitenränder
\usepackage[left=2cm,right=2cm,top=1.5cm,bottom=1.5cm,includeheadfoot]{geometry}

%neue Rechtschreibung
\usepackage[ngerman]{babel}

%Umlaute ermöglichen
\usepackage[utf8]{inputenc}

%Gesamtseitenzahl
\usepackage{lastpage}

% Kopf- und Fußzeile
\usepackage[automark]{scrpage2}

%Quellcode-Listings
\usepackage{listings}

%Hyperlinks
\usepackage{hyperref}

%Spalten
\usepackage{multicol}

%Kopfzeile
\ihead{PHP}
\chead{}
\ohead{http://kohnlehome.de/php/php-mysql-pdo.pdf}
\setheadsepline{0.5pt}

%Fußzeile
\setfootsepline{0.5pt}
\ifoot{Franz Kohnle}
\cfoot{Seite \thepage\ von  \pageref{LastPage}}
\ofoot{\today}

\pagestyle{scrheadings}

\begin{document}

% Überschrift 
\begin{center}
\LARGE % Schriftgröße
\bfseries % Fettdruck
\sffamily % Serifenlose Schrift
PHP und MySQL (PDO)
\end{center}

\section{Verbindung zu MySQL}
\subsection*{Verbindung als root zu MySQL ohne Datenbank aufbauen}
\begin{verbatim}
$rootpassword = 'mysql';
$pdo = new PDO(
    "mysql:host=localhost",
    'root',
    $rootpassword
);
\end{verbatim}

\subsection*{Verbindung als normaler Benutzer zu einer Datenbank aufbauen}
\begin{verbatim}
$dbname = 'databasename';
$user = 'username';
$password = 'userpassword';
$pdo = new PDO(
    "mysql:host=localhost;dbname=$dbname",
    $user,
    $password
);
\end{verbatim}

\subsection*{Fehler anzeigen}
\begin{verbatim}
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
\end{verbatim}

\section{Query ohne Prepared Statement ausführen}
\subsection*{Ohne Resultset (INSERT, UPATE, DELETE, ...)}
\begin{verbatim}
$sql = "UPDATE tabelle SET vorname = 'Franz' WHERE id = 42";
$anzahlDerZeilen = $pdo->exec($sql);
\end{verbatim}

\subsection*{Mit Resultset (SELECT)}
\begin{verbatim}
$sql = "SELECT * FROM tabelle WHERE vorname = 'Franz'";
foreach ($pdo->query($sql) as $zeile) {
    $vorname = $zeile['vorname'];
    $nachname = $zeile['nachname'];
}
\end{verbatim}

\section{Query mit Prepared Statement ausführen}
\subsection*{Ohne Resultset (INSERT, UPATE, DELETE, ...)}
\begin{verbatim}
$sql = "UPDATE tabelle SET vorname = ? WHERE id = ?";
$statement = $pdo->prepare($sql);
$statement->execute(['Franz', 42]);
$anzahlDerZeilen = $statement->rowCount();
\end{verbatim}

\subsection*{Mit Resultset (SELECT)}
\begin{verbatim}
$sql = "SELECT * FROM tabelle WHERE vorname = ?";
$statement = $pdo->prepare($sql);
$statement->execute(['Franz']);
while($row = $statement->fetch()) {
   $vorname = $row['vorname'];
   $nachname = $row['nachname'];   
}
\end{verbatim}


\section{Verbindung zu einer Datenbank schließen}
\begin{verbatim}
$pdo = null;
\end{verbatim}

\section{Fehlerbehandlung}
\begin{verbatim}
try {
    ...
} catch (PDOException $e) {
    echo 'Verbindung fehlgeschlagen: ' . $e->getMessage();
}
\end{verbatim}
\end{document}
