Heim > Datenbank > MySQL-Tutorial > Detailliertes Tutorial zur Verwendung der PHP-Datenbankerweiterung MySQL

Detailliertes Tutorial zur Verwendung der PHP-Datenbankerweiterung MySQL

伊谢尔伦
Freigeben: 2019-02-23 16:07:34
Original
4690 Leute haben es durchsucht

Mysqli bietet zwei Methoden zur objektorientierten und prozessorientierten Interaktion mit der Datenbank. Schauen wir uns diese beiden Methoden an.

Empfohlene MySQL-Video-Tutorials: „MySQL-Tutorial

1. Im objektorientierten Ansatz ist MySQL In einer Klasse gekapselt lautet die Konstruktionsmethode wie folgt:


Die an der obigen Syntax beteiligten Parameter werden wie folgt beschrieben.
__construct ([ string $host [, string $username [, string $passwd [, string $dbname[, int $port [, string $socket ]]]]]] )
Nach dem Login kopieren

Host: Die verbundene Serveradresse.

Benutzername: Der Benutzername für die Verbindung zur Datenbank. Der Standardwert ist der Benutzername des Serverprozesseigentümers.

passwd: Passwort für die Verbindung zur Datenbank, der Standardwert ist leer.

Datenbankname: Der Name der verbundenen Datenbank.

Port: TCP-Portnummer.

Socket: UNIX-Domänen-Socket.

Um eine Verbindung mit MySQL herzustellen, können Sie die MySQLi-Klasse über ihre Konstruktionsmethode instanziieren, z. B. den folgenden Code:

Mysqli bietet auch eine Mitgliedsmethode connect() zum Herstellen einer Verbindung zu MySQL. Wenn Sie die MySQL-Klasse mit einem leeren Konstruktor instanziieren, kann der Aufruf der connect()-Methode mit dem MySQL-Objekt auch eine Verbindung zu MySQL herstellen. Beispielsweise der folgende Code:
<?php
    $db_host="localhost"; //连接的服务器地址
    $db_user="root"; //连接数据库的用户名
    $db_psw="root"; //连接数据库的密码
    $db_name="sunyang"; //连接的数据库名称
    $mysqli=new mysqli($db_host,$db_user,$db_psw,$db_name);
?>
Nach dem Login kopieren

Schließen Sie die Verbindung mit dem MySQL-Server und Rufen Sie es mit dem mysqli-Objekt auf. Die Methode close() ist ausreichend, zum Beispiel:
<?php
    $db_host="localhost"; //连接的服务器地址
    $db_user="root"; //连接数据库的用户名
    $db_psw="root"; //连接数据库的密码
    $db_name="sunyang"; //连接的数据库名称
    $mysqli=new mysqli();
    $mysqli->connect($db_host,$db_user,$db_psw,$db_name);
?>
Nach dem Login kopieren

2. Prozessorientiert
$mysqli->close();
Nach dem Login kopieren

Beim prozessorientierten Ansatz stellt die MySQLi-Erweiterung die Funktion bereit mysqli_connect() zum Herstellen einer Verbindung mit MySQL. Das Syntaxformat ist wie folgt:

Die Verwendung der Funktion mysqli_connect() ist der Verwendung der Funktion mysql_connect() in sehr ähnlich MySQL-Erweiterung. Das Folgende ist ein Beispiel für die Verwendung der Funktion mysqli_connect():
mysqli mysqli_connect ([ string $host [, string $username [, string $passwd[, string $dbname [, int $port [, string $socket ]]]]]] )
Nach dem Login kopieren

Schließen Sie die Verbindung mit dem MySQL-Server mithilfe der Funktion mysqli_close(), zum Beispiel:
<?php
    $connection = mysqli_connect("localhost","root","root","sunyang");
    if ( $connection ) {
        echo "数据库连接成功";
    }else {
        echo "数据库连接失败";
    }
?>
Nach dem Login kopieren

3. Verwenden Sie MySQL, um auf Daten zuzugreifen.
mysqli_close();
Nach dem Login kopieren

Die Verwendung von MySQL, um auf Daten zuzugreifen, umfasst auch objektorientierte und prozessorientierte Methoden. In diesem Abschnitt wird nur die Verwendung der objektorientierten Methode erläutert Die in der MySQLi-Erweiterung verwendete prozessorientierte Methode wird hier nicht im Detail vorgestellt. Relevante Informationen finden Sie in der offiziellen Dokumentation.

In MySQL wird die Methode query() zum Ausführen von Abfragen verwendet. Das Syntaxformat dieser Methode ist wie folgt:

Die in der obigen Syntax beteiligten Parameter werden wie folgt beschrieben :
mixed query ( string $query [, int $resultmode ] )
Nach dem Login kopieren

Abfrage: SQL-Anweisung an den Server gesendet.

resultmode: Dieser Parameter akzeptiert zwei Werte, einer ist MYSQLI_STORE_RESULT, der angibt, dass das Ergebnis als gepufferter Satz zurückgegeben wird, der andere ist MYSQLI_USE_RESULT, der angibt, dass das Ergebnis als nicht gepufferter Satz zurückgegeben wird.

Das Folgende ist ein Beispiel für die Verwendung der query()-Methode zum Ausführen einer Abfrage:

Im obigen Code ist num_rows ein Attribut der Ergebnismenge, das die Anzahl zurückgibt Zeilen im Ergebnissatz. Die Methode fetch_array() fügt die Datensätze der Ergebnismenge in ein Array ein und gibt es zurück. Verwenden Sie abschließend die Methode free(), um den Speicher in der Ergebnismenge freizugeben, und verwenden Sie die Methode close(), um die Datenbankverbindung zu schließen.
query($query);
    if ($result) {
        if($result->num_rows>0){ //判断结果集中行的数目是否大于0
            while($row =$result->fetch_array() ){ //循环输出结果集中的记录
                echo ($row[0])."
"; echo ($row[1])."
"; echo ($row[2])."
"; echo ($row[3])."
"; echo "
"; } } }else { echo "查询失败"; } $result->free(); $mysqli->close(); ?>
Nach dem Login kopieren

Die Vorgänge zum Löschen von Datensätzen (Löschen), Speichern von Datensätzen (Einfügen) und Ändern von Datensätzen (Aktualisieren) werden ebenfalls mit der Methode query() ausgeführt. Das Folgende ist ein Beispiel für das Löschen von Datensätzen:

Die Vorgänge zum Speichern von Datensätzen (Einfügen) und Ändern von Datensätzen (Aktualisieren) ähneln den Vorgängen zum Löschen von Datensätzen (Löschen). Ändern Sie einfach die SQL-Anweisung entsprechend.
query($query);
    if ($result){
        echo "删除操作执行成功";
    }else {
        echo "删除操作执行失败";
    }
    $mysqli->close();
?>
Nach dem Login kopieren

4. Vorbereitete Anweisungen

Die Verwendung vorbereiteter Anweisungen kann die Leistung wiederverwendeter Anweisungen verbessern. Verwenden Sie in PHP die Methode „prepare()“, um vorbereitete Anweisungen abzufragen, und die Methode „execute()“, um vorbereitete Anweisungen auszuführen . PHP verfügt über zwei Arten von vorbereiteten Anweisungen: Eine dient zum Binden von Ergebnissen und die andere zum Binden von Parametern.

(1) Bindungsergebnisse

Die sogenannten Bindungsergebnisse dienen dazu, die benutzerdefinierten Variablen im PHP-Skript an die entsprechenden Felder im Ergebnissatz zu binden. Der Beispielcode zum Binden von Ergebnissen lautet wie folgt:

Beim Binden von Ergebnissen müssen die Variablen im Skript eins zu eins mit den Feldern im Ergebnissatz übereinstimmen. Verwenden Sie nach dem Binden den Befehl fetch(. ) Methode zu Die an die Ergebnismenge gebundenen Variablen werden einzeln herausgenommen und schließlich werden die Vorverarbeitungs- und Datenbankverbindungen geschlossen.
prepare($query); //进行预准备语句查询
    $result->execute(); //执行预准备语句
    $result->bind_result($id,$number,$name,$age); //绑定结果
    while ($result->fetch()) {
        echo $id;
        echo $number;
        echo $name;
        echo $age;
    }
    $result->close(); //关闭预准备语句
    $mysqli->close(); //关闭连接
?>
Nach dem Login kopieren

(2) Bindungsparameter

Die sogenannten Bindungsparameter dienen dazu, die benutzerdefinierten Variablen im PHP-Skript an die Parameter in der SQL-Anweisung zu binden (die Parameter werden durch „?“ ersetzt) . Um Parameter anzugeben, verwenden Sie die Methode bind_param(). Das Syntaxformat dieser Methode ist wie folgt:

Die in der obigen Syntax beteiligten Parameter werden wie folgt beschrieben.
bool bind_param ( string $types , mixed &$var1 [, mixed &$... ] )
Nach dem Login kopieren

Typen: Der Datentyp der gebundenen Variablen umfasst 4, wie in der folgenden Tabelle gezeigt (die vom Parametertyp akzeptierten Zeichentypen und die gebundenen Variablen müssen eins zu eins übereinstimmen -eins).

Detailliertes Tutorial zur Verwendung der PHP-Datenbankerweiterung MySQLvar1: Die Anzahl der gebundenen Variablen muss mit der Anzahl der Parameter in der SQL-Anweisung übereinstimmen.

Der Beispielcode für Bindungsparameter lautet wie folgt:

Sie können Parameter und Bindungsergebnisse auch gleichzeitig in einem Skript binden. Der Beispielcode lautet wie folgt:
prepare($query);
    $result->bind_param("ssi",$number,$name,$age); //绑定参数
    $number='sy0807';
    $name='employee7';
    $age=20;
    $result->execute(); //执行预准备语句
    $result->close();
    $mysqli->close();
?>
Nach dem Login kopieren

5. Mehrere Abfragen
prepare($query);
    $result->bind_param("i",$emp_id); //绑定参数
    $emp_id=4;
    $result->execute();
    $result->bind_result($id,$number,$name,$age); //绑定结果
    while ($result->fetch()) {
        echo $id."
"; echo $number."
"; echo $name."
"; echo $age."
"; } $result->close(); $mysqli->close(); ?>
Nach dem Login kopieren

Die MySQL-Erweiterung stellt die Methode multi_query() bereit, die kontinuierlich mehrere Abfragen ausführen kann:

Bei der Ausführung mehrerer Abfragen muss jede Abfrageanweisung mit Ausnahme der letzten Abfrageanweisung durch „;“ getrennt werden. Beispielcode zum Ausführen mehrerer Abfragen lautet wie folgt:
bool mysqli_multi_query ( mysqli $link , string $query )
Nach dem Login kopieren
 $mysqli=new mysqli("localhost","root","root","sunyang"); //实例化mysqli
    $query = "select emp_name from employee ;";
    $query .= "select dep_name from depment ";
    if ($mysqli->multi_query($query)) { //执行多个查询
        do {
            if ($result = $mysqli->store_result()) {
                while ($row = $result->fetch_row()) {
                    echo $row[0];
                    echo "
"; } $result->close(); } if ($mysqli->more_results()) { echo ("-----------------
"); //连个查询之间的分割线 } } while ($mysqli->next_result()); } $mysqli->close();//关闭连接 ?>
Nach dem Login kopieren

在上述代码中,store_result()方法用于获得一个缓冲结果集; fetch_row()方法的作用类似于fetch_array()方法;more_results()方法用于从一个多查询中检查是否还有更多的查询结果;next_result()方法用于从一个多查询中准备下一个查询结果。

6、事务操作

首先只有数据库中表的类型为InnoDB时,才支持事务提交,建议使用InnoDB,更建议使用mysqli扩展库了,不仅因为mysqli支持多条sql查询,更是因为它的速度、性能、安全更可靠,而且完全面向对象,当然也可以是面向过程操作。

看下面mysqli对事务操作的php代码:

query("set names utf8");
    if ($mysqli->connect_error){
        die("连接错误:".$mysqli->connect_error);
    }
    //将事务提交设为false
    $mysqli->autocommit(false);
    $sql = "insert into `user` values(null,'小红',md5(123),'321321')";
    $sql2 = "insert into `user` values(null,'小王',md5(321),'dasf')";
    //执行操作,返回的是bool值
    $query = $mysqli->query($sql);
    $query2 = $mysqli->query($sql2);
 
    if ($query && $query2){
        $mysqli->commit();
        echo "操作成功";
    }else{
        echo "操作失败".$mysqli->error;
        $mysqli->rollback();
    }
    $mysqli->autocommit(true);
    $mysqli->close();
?>
Nach dem Login kopieren

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage