\documentclass[a4paper, 11pt]{article}
\renewcommand{\familydefault}{\sfdefault}
\usepackage{a4wide}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{color}
\usepackage{graphicx}
\usepackage{setspace}
\usepackage{ulem}
\usepackage{listings}
\usepackage{float}
\usepackage[rflt]{floatflt}
\usepackage{tabularx}
\setlength{\parindent}{0pt}
\title{MySQL und PHP (MySQLi)}
\usepackage[
pdftitle={MySQL und PHP (MySQLi)}
pdfsubject={Ein kurzes einführendes Beispiel zur Nutzung von MySQL unter PHP}
pdfauthor={Udo Schmal}
pdfkeywords={Administration}
]{hyperref}
\definecolor{darkblue}{rgb}{0,0,.5}
\hypersetup{pdftex=true, colorlinks=true, breaklinks=true, linkcolor=darkblue, menucolor=darkblue, pagecolor=darkblue, urlcolor=darkblue}
\begin{document}MySQL und PHP (MySQLi)
\singlespacing
{\LARGE \textbf{\label{sec:title}MySQL und PHP (MySQLi)}}

Die MySQL Erweiterung ist ab PHP5.5.0 (2012) als veraltet (deprecated) gekennzeichnet und wurde in PHP7.0.0 entfernt. Stattdessen sollte entweder die MySQLi (improved) oder PDO\_MYSQL Erweiterung verwendet werden. Deshalb gehe ich hier nicht mehr auf die alte funktionale Schnittstelle ein, sondern nur noch auf MySQLi. PDO unterstützt viele unterschiedliche Datenbank-Systeme während MySQLi halt nur MySQL Datenbanken unterstützt, falls ein Umstieg auf ein anderes Datenbank-System möglich sein sollte ist darauf zu achten.

Unter MySQLi existiert sowohl eine objektorientierte als eine funktionelle Schnittstelle, hier ein kleines Beispiel zur Nutzung der objektorientierten Variante.
\begin{lstlisting}[breaklines]\&lt;?php
class testDbClass \{
  // database settings
  static \$dbServer = 'localhost';
  static \$dbName = 'myTestDB';
  static \$dbUser = 'dbuser';
  static \$dbPassword = 'dbpassword';

  /** @var \textbackslashmysqli */
  protected \$db;

  public function \_\_construct() \{
    // connect database
    \$this-\&gt;db = new mysqli(self::\$dbServer, self::\$dbUser, self::\$dbPassword, self::\$dbName);
    if (\$this-\&gt;db-\&gt;connect\_errno) \{
      \$this-\&gt;error = \&quot;Connect failed: \&quot; . \$this-\&gt;db-\&gt;connect\_error;
    \} else \{
      \$this-\&gt;db-\&gt;query(\&quot;SET CHARACTER SET `utf8`\&quot;);
      \$this-\&gt;db-\&gt;query(\&quot;SET NAMES 'utf8'\&quot;);
    \}
  \}

  public function \_\_destruct() \{
    // disconnect database
    \$this-\&gt;db-\&gt;close();
    unset(\$this-\&gt;db);
  \}

  public function main() \{
    // do the job
    // create a table
    \$this-\&gt;db-\&gt;query(\&quot;CREATE TABLE IF NOT EXISTS `countries` (\&quot; .
      \&quot;`ISO` varchar(2) NOT NULL, \&quot; .
      \&quot;`de` varchar(64) DEFAULT NULL, \&quot; .
      \&quot;`en` varchar(64) DEFAULT NULL, \&quot; .
      \&quot;`KFZ` varchar(4) DEFAULT NULL, \&quot; .
      \&quot;`Layout` int(1) DEFAULT NULL, \&quot; .
      \&quot;`PLZorder` tinyint(4) NOT NULL DEFAULT '0', \&quot; .
      \&quot;`LKZ` varchar(5) DEFAULT NULL, \&quot; .
      \&quot;`Postf` varchar(8) DEFAULT NULL, \&quot; .
      \&quot;`Lang` varchar(2) DEFAULT NULL, \&quot; .
      \&quot;`de\_dec` varchar(64) DEFAULT NULL, \&quot; .
      \&quot;`MwSt` tinyint(1) NOT NULL DEFAULT '0', \&quot; .
      \&quot;PRIMARY KEY (`ISO`) \&quot; .
      \&quot;) ENGINE=MyISAM DEFAULT CHARSET=utf8;\&quot;);
    // insert a record
    \$this-\&gt;db-\&gt;query(\&quot;INSERT INTO `countries` \&quot; .
      \&quot;(`ISO`, `de`, `en`, `KFZ`, `Layout`, `PLZorder`, `LKZ`, `Postf`, `Lang`, `de\_dec`, `MwSt`) \&quot; .
      \&quot;VALUES('DE', 'Deutschland', 'Germany', 'D', 0, 0, '+49', 'Postfach', 'de', 'Deutschland', 1);\&quot;);
    // get values
    if (\$rs = \$this-\&gt;db-\&gt;query(\&quot;SELECT `de`, `Lang` FROM `countries` WHERE `ISO`='DE'\&quot;)) \{
      \$item = \$rs-\&gt;fetch\_object();
      if (!empty(\$item)) \{
        echo \&quot;Land:\&quot; . \$item-\&gt;de . \&quot; SprachCode:\&quot; . \$item-\&gt;Lang;
      \}
      \$rs-\&gt;close();
      unset(\$rs);
    \}
  \}
\}

\$myDB = new testDbClass(); //create \&amp; initialize the DBClass, call constructor
\$myDB-\&gt;main(); // run the main function
unset(\$myDB); // free DBClass object, call destructor
?\&gt;\end{lstlisting}
\end{document}