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

Author: , published: , last modified:

Kontakt

Udo Schmal

Udo Schmal
Softwareentwickler
Olvengraben 41
47608 Geldern
Nordrhein-Westfalen
Germany





+49 2831 9776557
+49 1575 0663676
+49 2831 1328709
SMS
WhatsApp

Instagram Profile
vCard 3.0

Service Infos

CMS Info Product Name:
UDOs Webserver
Version:
0.5.0.101
Description:
All in one Webserver
Copyright:
Udo Schmal
Compilation:
Sun, 18. Jul 2021 17:42:24
Development Info Compiler:
Free Pascal FPC 3.3.1
compiled for:
OS:Linux, CPU:x86_64
System Info OS:
Ubuntu 20.04.2 LTS (Focal Fossa)
Hardware Info Model:
Hewlett-Packard HP Pavilion dv7 Notebook PC
CPU Name:
Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz
CPU Type:
x86_64, 1 physical CPU(s), 2 Core(s), 4 logical CPU(s), 1121.995 MHz