Heim Backend-Entwicklung PHP-Tutorial Wie PHP eine MySQL-Datenbank basierend auf ORM betreibt

Wie PHP eine MySQL-Datenbank basierend auf ORM betreibt

May 21, 2018 pm 01:37 PM
mysql php 数据库

In diesem Artikel wird hauptsächlich PHP für den Betrieb der MySQL-Datenbank basierend auf der ORM-Methode vorgestellt. Er analysiert die Kapselungs- und Verwendungsfähigkeiten von PHP für allgemeine Vorgänge der MySQL-Datenbank in Form spezifischer Beispiele

Die Details sind wie folgt:

ORM----Oriented Relationship Mapper, der einen objektorientierten Ansatz zum Betrieb der Datenbank verwendet. Letztlich geht es immer noch um die Kapselung von SQL-Anweisungen.

Zuallererst hat unsere Datenbank die folgende Tabelle:

Wir hoffen, setUserid("11111") für diese Tabelle verwenden zu können, also Set userid; getUserid() kann die Benutzer-ID des Objekts abrufen. Daher müssen wir ein Modellobjekt erstellen, das der Tabelle in der Datenbank entspricht.

Da das jeder Tabelle entsprechende Modell über Set/Get-Operationen verfügen sollte, verwenden wir zur Definition eine übergeordnete Klasse BasicModel. Andere Modelle erben von diesem Modell. Der Code von

BasicModel lautet wie folgt:

<?php
  /*
   * author:Tammy Pi
   * function:Model类的基类,封装set/get操作
   */
  class BasicModel{
    private $map = null;
    function TbUser() {
      $this->map = array();
    }
    function __set($key,$value){
      $this->map[$key] = $value;
    }
    function __get($key){
      return $this->map[$key];
    }
    function __call($name,$arguments) {
      if(substr($name,0,3)==&#39;set&#39;){
        $this->__set(strtolower(substr($name,3)),$arguments[0]);
      }else{
        return $this->__get(strtolower(substr($name,3)));
      }
    }
  }
?>
Nach dem Login kopieren

Dann erbt ihn die Modellklasse TbUser, die der Tabelle tb_user entspricht.

<?php
  require_once("BasicModel.php");
  class TbUser extends BasicModel{
  }
?>
Nach dem Login kopieren

Auf diese Weise können wir Set/Get-Operationen für die Instanz von TbUser ausführen.

Um ORM zum Betreiben der Datenbank zu verwenden, müssen Sie in der Lage sein, mit findByWhere($where) abzufragen, was ein Array von Objekten zurückgibt, die gelöscht werden sollen; update($obj) ), um den Aktualisierungsvorgang durchzuführen.

Im Wesentlichen übergibt der Benutzer ein Objekt und wir verwenden Code, um das Objekt in eine SQL-Anweisung umzuwandeln. Im Wesentlichen werden SQL-Anweisungen weiterhin ausgeführt.

Wir verwenden also Schnittstellen, um eine Reihe von Operationen darzustellen. Der Code von IBasicDAO lautet wie folgt:

<?php
  interface IBasicDAO {
    public function findByWhere($where);
    public function findWhereOrderBy($where,$order,$start=null,$limit=null);
    public function save($obj);
    public function delete($obj);
    public function update($obj);
  }
?>
Nach dem Login kopieren

Das Wichtigste für uns ist die Implementierung dieser Schnittstelle. Schließen Sie die Konvertierung von Objekten und SQL ab. Der Code von

BasicDAO lautet wie folgt:

<?php
  require_once("IBasicDAO.php");
  class BasicDAO implements IBasicDAO{
    protected $modelName = null;
    private $tableName = null;
    private $h = "localhost";
    private $user = "root";
    private $pass = "root";
    private $db = "db_toilet";
    //获得连接
    public function getConnection(){
      $conn = mysqli_connect($this->h,$this->user,$this->pass,$this->db);
      return $conn;
    }
    //初始化
    public function init() {
      //根据model的名字得到表的名字
      $this->tableName = strtolower(substr($this->modelName,0,2))."_".strtolower(substr($this->modelName,2));
    }
    //获得一个表的列名
    public function getColumn($tableName) {
      $sql = "show columns from ".$tableName;
      $conn = $this->getConnection();
      $columns = array();
      if($conn!=null){
        $rtn = mysqli_query($conn,$sql);
        while($rtn!==false&&($row=mysqli_fetch_array($rtn))!=null){
          $columns[] = $row[0];
        }
        mysqli_close($conn);
      }
      return $columns;
    }
    //条件查询
    public function findByWhere($where){
      //获得数据表的列名
      $columns = $this->getColumn($this->tableName);
      //拼接sql语句
      $sql = "select * from ".$this->tableName." where ".$where;
      $conn = $this->getConnection();
      $arr = array();
      if($conn!=null){
        $rtn = mysqli_query($conn,$sql);
        while($rtn!==false&&($row=mysqli_fetch_array($rtn))!=null){
          $index = -1;
          $obj = new $this->modelName();
          foreach($columns as $column){
            $obj->{"set".ucfirst($column)}($row[++$index]);
          }
          $arr[] = $obj;
        }
        mysqli_close($conn);
      }
      return $arr;
    }
    //分页查询;支持排序
    public function findWhereOrderBy($where,$order,$start=null,$limit=null){
      //获得数据表的列名
      $columns = $this->getColumn($this->tableName);
      //拼接sql语句
      $sql = "select * from ".$this->tableName." where ".$where." order by ".$order;
      if($start!=null&&$limit!=null){
        $sql .= "limit ".$start.",".$limit;
      }
      $conn = $this->getConnection();
      $arr = array();
      if($conn!=null){
        $rtn = mysqli_query($conn,$sql);
        while($rtn!==false&&($row=mysqli_fetch_array($rtn))!=null){
          $index = -1;
          $obj = new $this->modelName();
          foreach($columns as $column){
            $obj->{"set".ucfirst($column)}($row[++$index]);
          }
          $arr[] = $obj;
        }
        mysqli_close($conn);
      }
      return $arr;
    }
    //保存操作
    public function save($obj){
      $columns = $this->getColumn($this->tableName);
      $conn = $this->getConnection();
      $tag = false;
      if($conn!=null){
        $sql = "insert into ".$this->tableName."(";
        foreach($columns as $column){
          $sql .= $column.",";
        }
        $sql = substr($sql,0,strlen($sql)-1).") values(";
        foreach($columns as $column){
          $value = $obj->{"get".ucfirst($column)}();
          //判断$value的类型
          if($value==null){
            $sql .= "null,";
          }else if(preg_match("/^[0-9]*$/", $value)){
            //是数字
            $sql .= $value.",";
          }else{
            $sql .= "&#39;".$value."&#39;,";
          }
        }
        $sql = substr($sql,0,strlen($sql)-1);
        $sql .= ")";
        //执行sql语句
        mysqli_query($conn,$sql);
        $tag = true;
        mysqli_close($conn);
      }
      return $tag;
    }
    //删除操作
    public function delete($obj){
      $conn = $this->getConnection();
      $tag = false;
      if($conn!=null){
        $sql = "delete from ".$this->tableName." where ";
        $columns = $this->getColumn($this->tableName);
        $value = $obj->{"get".ucfirst($columns[0])}();
        if($value!=null){
          //是数字
          if(preg_match("/^[0-9]*$/", $value)){
            $sql .= $columns[0]."=".$value;
          }else{
            $sql .= $columns[0]."=&#39;".$value."&#39;";
          }
          //执行
          mysqli_query($conn,$sql);
          $tag = true;
        }
        mysqli_close($conn);
      }
      return $tag;
    }
    //更新操作
    public function update($obj){
      $conn = $this->getConnection();
      $columns = $this->getColumn($this->tableName);
      $tag = false;
      if($conn!=null){
        $sql = "update ".$this->tableName." set ";
        for($i=1;$i<count($columns);$i++){
          $column = $columns[$i];
          $value = $obj->{"get".ucfirst($columns[$i])}();
          if($value==null){
            $sql .= $column."=null,";
          }else if(preg_match("/^[0-9]*$/",$value)){
            $sql .= $column."=".$value.",";
          }else{
            $sql .= $column."=&#39;".$value."&#39;,";
          }
        }
        $sql = substr($sql,0,strlen($sql)-1);
        $sql .= " where ";
        $tempColumn = $columns[0];
        $tempValue = $obj->{"get".ucfirst($columns[0])}();
        if(preg_match("/^[0-9]*$/", $tempValue)){
          $sql .= $tempColumn."=".$tempValue;
        }else{
          $sql .= $tempColumn."=&#39;".$tempValue."&#39;";
        }
        //执行操作
        mysqli_query($conn,$sql);
        $tag = true;
        mysqli_close($conn);
      }
      return $tag;
    }
  }
?>
Nach dem Login kopieren

Beim Betrieb der Tabelle tb_user wird dann hauptsächlich TbUserDAO verwendet, das den ModelName auf setzt „TbUser“: Der Code weiß, dass die Operationstabelle tb_user ist, und kann dann eine Reihe von Vorgängen ausführen.

<?php
  require_once("BasicDAO.php");
  require_once("../model/TbUser.php");
  class TbUserDAO extends BasicDAO{
    function TbUserDAO(){
      $this->modelName = &#39;TbUser&#39;;
      parent::init();
    }
  }
?>
Nach dem Login kopieren

Dann können Sie die Datenbank objektorientiert betreiben.

Zum Beispiel:

$tbUserDAO = new TbUserDAO();
$tbUser = new TbUser();
$tbUser->setUserid("fetchingsoft@163.com");
$tbUser->setUsername("fetching");
$tbUserDAO->update($tbUser);
echo "执行成功!";
print_r($list);
Nach dem Login kopieren

Aktualisieren Sie die Datensätze in der Datenbank.

Verwandte Empfehlungen:

Ausführliche Erläuterung zur Implementierung einer form automatischen Einreichung

So verwenden Sie den regulären Abgleich, um leere Zeilen und Kommentarzeilen in

phpstorm

PHPstorm zu löschen vollständigste Zusammenfassung der Tastenkombinationen

Das obige ist der detaillierte Inhalt vonWie PHP eine MySQL-Datenbank basierend auf ORM betreibt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Zweck von PHP: Erstellen dynamischer Websites Zweck von PHP: Erstellen dynamischer Websites Apr 15, 2025 am 12:18 AM

PHP wird verwendet, um dynamische Websites zu erstellen. Zu den Kernfunktionen gehören: 1. Dynamische Inhalte generieren und Webseiten in Echtzeit generieren, indem Sie eine Verbindung mit der Datenbank herstellen; 2. Verarbeiten Sie Benutzerinteraktions- und Formulareinreichungen, überprüfen Sie Eingaben und reagieren Sie auf Operationen. 3. Verwalten Sie Sitzungen und Benutzerauthentifizierung, um eine personalisierte Erfahrung zu bieten. 4. Optimieren Sie die Leistung und befolgen Sie die Best Practices, um die Effizienz und Sicherheit der Website zu verbessern.

PHP und Python: Code Beispiele und Vergleich PHP und Python: Code Beispiele und Vergleich Apr 15, 2025 am 12:07 AM

PHP und Python haben ihre eigenen Vor- und Nachteile, und die Wahl hängt von den Projektbedürfnissen und persönlichen Vorlieben ab. 1.PHP eignet sich für eine schnelle Entwicklung und Wartung großer Webanwendungen. 2. Python dominiert das Gebiet der Datenwissenschaft und des maschinellen Lernens.

PHP und Python: Verschiedene Paradigmen erklärt PHP und Python: Verschiedene Paradigmen erklärt Apr 18, 2025 am 12:26 AM

PHP ist hauptsächlich prozedurale Programmierung, unterstützt aber auch die objektorientierte Programmierung (OOP). Python unterstützt eine Vielzahl von Paradigmen, einschließlich OOP, funktionaler und prozeduraler Programmierung. PHP ist für die Webentwicklung geeignet, und Python eignet sich für eine Vielzahl von Anwendungen wie Datenanalyse und maschinelles Lernen.

So starten Sie MySQL von Docker So starten Sie MySQL von Docker Apr 15, 2025 pm 12:09 PM

Der Prozess des Startens von MySQL in Docker besteht aus den folgenden Schritten: Ziehen Sie das MySQL -Image zum Erstellen und Starten des Containers an, setzen

PHP: Datenbanken und serverseitige Logik bearbeiten PHP: Datenbanken und serverseitige Logik bearbeiten Apr 15, 2025 am 12:15 AM

PHP verwendet MySQLI- und PDO-Erweiterungen, um in Datenbankvorgängen und serverseitiger Logikverarbeitung zu interagieren und die serverseitige Logik durch Funktionen wie Sitzungsverwaltung zu verarbeiten. 1) Verwenden Sie MySQLI oder PDO, um eine Verbindung zur Datenbank herzustellen und SQL -Abfragen auszuführen. 2) Behandeln Sie HTTP -Anforderungen und Benutzerstatus über Sitzungsverwaltung und andere Funktionen. 3) Verwenden Sie Transaktionen, um die Atomizität von Datenbankvorgängen sicherzustellen. 4) Verhindern Sie die SQL -Injektion, verwenden Sie Ausnahmebehandlung und Schließen von Verbindungen zum Debuggen. 5) Optimieren Sie die Leistung durch Indexierung und Cache, schreiben Sie hochlesbarer Code und führen Sie die Fehlerbehandlung durch.

Warum PHP verwenden? Vorteile und Vorteile erläutert Warum PHP verwenden? Vorteile und Vorteile erläutert Apr 16, 2025 am 12:16 AM

Zu den Kernvorteilen von PHP gehören einfacher Lernen, starke Unterstützung für Webentwicklung, reiche Bibliotheken und Rahmenbedingungen, hohe Leistung und Skalierbarkeit, plattformübergreifende Kompatibilität und Kosteneffizienz. 1) leicht zu erlernen und zu bedienen, geeignet für Anfänger; 2) gute Integration in Webserver und unterstützt mehrere Datenbanken. 3) leistungsstarke Frameworks wie Laravel; 4) hohe Leistung kann durch Optimierung erzielt werden; 5) mehrere Betriebssysteme unterstützen; 6) Open Source, um die Entwicklungskosten zu senken.

Wählen Sie zwischen PHP und Python: Ein Leitfaden Wählen Sie zwischen PHP und Python: Ein Leitfaden Apr 18, 2025 am 12:24 AM

PHP eignet sich für Webentwicklung und schnelles Prototyping, und Python eignet sich für Datenwissenschaft und maschinelles Lernen. 1.PHP wird für die dynamische Webentwicklung verwendet, mit einfacher Syntax und für schnelle Entwicklung geeignet. 2. Python hat eine kurze Syntax, ist für mehrere Felder geeignet und ein starkes Bibliotheksökosystem.

MySQLs Rolle: Datenbanken in Webanwendungen MySQLs Rolle: Datenbanken in Webanwendungen Apr 17, 2025 am 12:23 AM

Die Hauptaufgabe von MySQL in Webanwendungen besteht darin, Daten zu speichern und zu verwalten. 1.Mysql verarbeitet effizient Benutzerinformationen, Produktkataloge, Transaktionsunterlagen und andere Daten. 2. Durch die SQL -Abfrage können Entwickler Informationen aus der Datenbank extrahieren, um dynamische Inhalte zu generieren. 3.Mysql arbeitet basierend auf dem Client-Server-Modell, um eine akzeptable Abfragegeschwindigkeit sicherzustellen.

See all articles