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

Kontakt

Udo Schmal
Udo Schmal

Udo Schmal
Softwareentwickler
Ellerndiek 26
24837 Schleswig
Schleswig-Holstein
Germany




+49 4621 9785538
+49 1575 0663676
+49 4621 9785539
SMS
WhatsApp

Google Maps Profile
Instagram Profile
vCard 2.1, vCard 3.0, vCard 4.0

Service Infos

CMS Info

Product Name:
UDOs Webserver
Version:
0.5.1.71
Description:
All in one Webserver
Copyright:
Udo Schmal
Compilation:
Tue, 26. Mar 2024 07:33:29

Development Info

Compiler:
Free Pascal FPC 3.3.1
compiled for:
OS:Linux, CPU:x86_64

System Info

OS:
Ubuntu 22.04.4 LTS (Jammy Jellyfish)

Hardware Info

Model:
Hewlett-Packard HP Pavilion dm4 Notebook PC
CPU Name:
Intel(R) Core(TM) i5-2430M CPU @ 2.40GHz
CPU Type:
x86_64, 1 physical CPU(s), 2 Core(s), 4 logical CPU(s),  MHz