MySQL und PHP (MySQLi) 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. <?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 ?>