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.
<?php
class testDbClass {
// database settings
static $dbServer = 'localhost';
static $dbName = 'myTestDB';
static $dbUser = 'dbuser';
static $dbPassword = 'dbpassword';
/** @var \mysqli */
protected $db;
public function __construct() {
// connect database
$this->db = new mysqli(self::$dbServer, self::$dbUser, self::$dbPassword, self::$dbName);
if ($this->db->connect_errno) {
$this->error = "Connect failed: " . $this->db->connect_error;
} else {
$this->db->query("SET CHARACTER SET `utf8`");
$this->db->query("SET NAMES 'utf8'");
}
}
public function __destruct() {
// disconnect database
$this->db->close();
unset($this->db);
}
public function main() {
// do the job
// create a table
$this->db->query("CREATE TABLE IF NOT EXISTS `countries` (" .
"`ISO` varchar(2) NOT NULL, " .
"`de` varchar(64) DEFAULT NULL, " .
"`en` varchar(64) DEFAULT NULL, " .
"`KFZ` varchar(4) DEFAULT NULL, " .
"`Layout` int(1) DEFAULT NULL, " .
"`PLZorder` tinyint(4) NOT NULL DEFAULT '0', " .
"`LKZ` varchar(5) DEFAULT NULL, " .
"`Postf` varchar(8) DEFAULT NULL, " .
"`Lang` varchar(2) DEFAULT NULL, " .
"`de_dec` varchar(64) DEFAULT NULL, " .
"`MwSt` tinyint(1) NOT NULL DEFAULT '0', " .
"PRIMARY KEY (`ISO`) " .
") ENGINE=MyISAM DEFAULT CHARSET=utf8;");
// insert a record
$this->db->query("INSERT INTO `countries` " .
"(`ISO`, `de`, `en`, `KFZ`, `Layout`, `PLZorder`, `LKZ`, `Postf`, `Lang`, `de_dec`, `MwSt`) " .
"VALUES('DE', 'Deutschland', 'Germany', 'D', 0, 0, '+49', 'Postfach', 'de', 'Deutschland', 1);");
// get values
if ($rs = $this->db->query("SELECT `de`, `Lang` FROM `countries` WHERE `ISO`='DE'")) {
$item = $rs->fetch_object();
if (!empty($item)) {
echo "Land:" . $item->de . " SprachCode:" . $item->Lang;
}
$rs->close();
unset($rs);
}
}
}
$myDB = new testDbClass(); //create & initialize the DBClass, call constructor
$myDB->main(); // run the main function
unset($myDB); // free DBClass object, call destructor
?>