


So verwenden Sie MySQLi-Transaktionen und vorbereitete Anweisungen in PHP
Für MySQLi sind Transaktionen und vorbereitete Anweisungen natürlich das Kapital, das es ermöglicht, MySQL-Erweiterungen zu eliminieren. Wir haben auch schon früher etwas über Transaktionen und vorbereitete Kontoauszüge in PDO gelernt. Deshalb werden wir hier nicht mehr über die Theorie sprechen und direkt zum Code gehen, um den Unterschied in der Verwendung dieser beiden Funktionen in MySQLi und PDO zu sehen.
Transaktionsverarbeitung
Zuallererst müssen wir MySQLi weiterhin erlauben, auch Ausnahmen für falsche Anweisungen zu melden. Diese Funktion unterscheidet sich stark von PDO. In PDO können wir das Fehlerberichtsattribut der Verbindung direkt angeben. In MySQLi müssen wir das Fehlerattribut im MySQLi_Driver-Objekt angeben, um eine Ausnahme auszulösen. Offensichtlich ist MySQLi_Driver das Treiberobjekt von MySQLi.
// 使用异常处理错误情况 $driver = new mysqli_driver(); $driver->report_mode = MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT;
Dies gibt an, dass bei Verwendung der MySQLi-Erweiterung alle Fehlermeldungen als Ausnahmen ausgegeben werden.
Der folgende Inhalt ist PDO tatsächlich sehr ähnlich.
try { // 开始事务 $mysqli->begin_transaction(); $mysqli->query("insert into tran_innodb (name, age) values ('Joe', 12)"); $mysqli->query("insert into tran_innodb2 (name, age) values ('Joe', 12)"); // 不存在的表 // 提交事务 $mysqli->commit(); } catch (Exception $e) { // 回滚事务 $mysqli->rollback(); var_dump($e->getMessage()); // string(44) "Table 'blog_test.tran_innodb2' doesn't exist" }
Wir verwenden auch begin_transaction(), um die Transaktion zu starten. Anschließend wird die Transaktion über die Methode „comint()“ festgeschrieben. In diesem Testcode meldet die zweite SQL-Anweisung einen Fehler, gibt also den Catch ein und verwendet rollback(), um die Transaktion zurückzusetzen.
Vorverarbeitungsanweisungen
Im Allgemeinen gibt es keinen großen Unterschied zwischen Transaktionsverarbeitung und PDO, es gibt jedoch einige Unterschiede zwischen der Verwendung vorbereiteter Anweisungen und PDO. Der erste ist, dass die Platzhalter in unserem MySQLi nur Fragezeichen-Platzhalter sind. Darüber hinaus ähnelt nur bind_param() nicht der bindValue()-Methode in PDO.
$stmt = $mysqli->prepare("select * from zyblog_test_user where username = ?"); $username = 'aaa'; $stmt->bind_param("s", $username); // 绑定参数 $stmt->execute(); // 执行语句 $aUser = $stmt->fetch(); // 获取mysqli_result结果集对象 $username='bbb'; $stmt->bind_param('s', $username); $stmt->execute(); $bUser = $stmt->fetch(); var_dump($aUser); // array(4) { // ["id"]=> // int(1) // ["username"]=> // string(3) "aaa" // ["password"]=> // string(3) "aaa" // ["salt"]=> // string(3) "aaa" // } var_dump($bUser); // array(4) { // ["id"]=> // int(2) // ["username"]=> // string(3) "bbb" // ["password"]=> // string(3) "bbb" // ["salt"]=> // string(3) "123" // }
Wie aus dem Code ersichtlich ist, unterscheidet sich auch die Verwendung der Methode bind_param() stark von der von PDO. Es erfordert keinen Index, sondern erhält einen s-Parameter. Dieser Parameter gibt den Typ der gebundenen Daten an, s ist der String-Typ. Wir werden mehr über andere Typen erfahren, wenn wir MySQLi_STMT-bezogene Inhalte untersuchen.
Zusammenfassung
Tatsächlich sind die meisten Inhalte auf Codeebene PDO sehr ähnlich, einige Parameter unterscheiden sich jedoch. Für uns geht es noch mehr ums Lernen und Verstehen, um nicht verwirrt zu werden, wenn wir einige Frameworks kapseln oder verwenden, die MySQLi als zugrunde liegende Datenbankoperation verwenden.
Testcode:
https://github.com/zhangyue0503/dev-blog/blob/master/php/202009/source/7.PHP中的MySQLi扩展学习(四)mysqli的事务与预处理语句.php
Empfohlenes Lernen: php-Video-Tutorial
Das obige ist der detaillierte Inhalt vonSo verwenden Sie MySQLi-Transaktionen und vorbereitete Anweisungen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.
