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
?>

Autor: , veröffentlicht: , letzte Änderung:

Kontakt

Service Infos

CMS Info
UDOs Webserver

0.3.1.24

All in one Webserver

Udo Schmal

Sa, 21 Okt 2017 00:30:10
Development Info
Lazarus LCL 1.9.0.0

Free Pascal FPC 3.1.1

OS:Win64, CPU:x86_64
Hardware Info
Precision WorkStation T3500

Intel(R) Xeon(R) CPU W3530 @ 2.80GHz

x86_64, 1 physical CPU(s), 4 Core(s), 8 logical CPU(s), 2800 MHz