


Comparaison de l'utilisation et des opérations des transactions PHP mysql et mysqli
Tout d'abord, la connexion mysqli est une connexion permanente, tandis que mysql est une connexion non permanente. Qu'est-ce que ça veut dire? Chaque fois que la connexion mysql est utilisée pour la deuxième fois, un nouveau processus sera rouvert, tandis que mysqli n'utilise que le même processus, ce qui peut réduire considérablement la pression côté serveur
mysqli encapsule les transactions, etc. Certains avancés Les opérations encapsulent également de nombreuses méthodes disponibles dans le processus d'exploitation de la base de données.
L'application la plus courante est celle des transactions mysqli.
Par exemple, l'exemple suivant :
Le code est le suivant :
$mysqli = new mysqli('localhost','root','','DB_Lib2Test'); $mysqli->autocommit(false);//开始事物 $mysqli->query($sql1); $mysqli->query($sql2); if(!$mysqli->errno){ $mysqli->commit(); echo 'ok'; }else{ echo 'err'; $mysqli->rollback(); }
En PHP, mysqli a bien encapsulé la transaction mysql fonctionnement connexe. L'exemple suivant :
Le code est le suivant :
$sql1 = "update User set ScoreCount = ScoreCount +10 where ID= '123456'"; $sql2 = "update ScoreDetail set FScore = 300 where ID= '123456'"; $sql3 = "insert into ScoreDetail ID,Score) values ('123456',60)"; $mysqli = new mysqli('localhost','root','','DB_Lib2Test'); $mysqli->autocommit(false); // 开始事务 $mysqli->query($sql1); $mysqli->query($sql2); if (!$mysqli->errno) { $mysqli->commit(); echo 'ok'; } else { echo 'err'; $mysqli->rollback(); }
Ici, nous utilisons la série de fonctions php mysql pour effectuer des transactions.
Le code est le suivant :
$sql1 = "update User set ScoreCount = ScoreCount +10 where ID= '123456'"; $sql2 = "update ScoreDetail set FScore = 300 where ID= '123456'"; $sql3 = "insert into ScoreDetail ID,Score) values ('123456',60)"; $conn = mysql_connect('localhost','root',''); mysql_select_db('DB_Lib2Test'); mysql_query('start transaction'); //mysql_query('SET autocommit=0'); mysql_query($sql1); mysql_query($sql2); if (mysql_errno()) { mysql_query('rollback'); echo 'err'; } else { mysql_query('commit'); echo 'ok'; } // mysql_query('SET autocommit=1'); // mysql_query($sql3);
Il convient de noter ici que
MyISAM : ne prend pas en charge les transactions et est utilisé pour les programmes en lecture seule pour améliorer les performances
InnoDB : prend en charge les transactions ACID, les verrous au niveau des lignes et la concurrence
Berkeley DB : prend en charge les transactions
Encore une chose à noter : le comportement par défaut de MySQL est d'exécuter une instruction COMMIT après chaque instruction SQL. exécuté, convertissant ainsi efficacement chaque instruction autonome en une transaction.
Mais souvent, lorsque nous devons utiliser des transactions, nous devons exécuter plusieurs instructions SQL. Cela nous oblige à définir manuellement l'attribut autocommit de MySQL sur 0, qui est par défaut 1.
En même temps, utilisez l'instruction START TRANSACTION pour ouvrir explicitement une transaction. Comme l'exemple ci-dessus.
Quelles seront les conséquences si vous ne le faites pas ?
Nous supprimerons les commentaires //mysql_query(‘SET autocommit=0′); et // mysql_query($sql3); dans le deuxième morceau de code ci-dessus, puis exécuterons.
Pour le moment, mysql_query($sql3) ne sera pas inséré dans la base de données lors de son exécution.
Si nous supprimons le commentaire // mysql_query(‘SET autocommit=1′);, alors mysql_query($sql3);
Habituellement, une transaction est terminée lorsqu'une instruction COMMIT ou ROLLBACK est exécutée, mais certaines instructions DDL déclencheront implicitement COMMIT.
Par exemple, l'instruction suivante
ALTER FUNCTION
ALTER PROCEDURE
ALTER TABLE
BEGIN
CREATE DATABASE
CREATE FUNCTION
CREATE INDEX
CRÉER UNE PROCÉDURE
CRÉER UNE TABLE
DROP DATABASE
DROP FUNCTION
DROP INDEX
DROP PROCEDURE
DROP TABLE
UNLOCK TABLES
CHARGER LES DONNÉES MAÎTRES
LOCK TABLES
RENAME TABLE
TRUNCATE TABLE
SET AUTOCOMMIT=1
START TRANSACTION
Prenons un autre exemple.
Le code est le suivant :
$sql1 = 'create table ScoreDetail_new(id int)'; $sql2 = 'rename table ScoreDetail to ScoreDetail_bak'; $sql3 = 'rename table ScoreDetail_new to ScoreDetail'; $mysqli = new mysqli('localhost','root','','DB_Lib2Test'); $mysqli->autocommit(false);//开始事物 $mysqli->query($sql1); $mysqli->query($sql2); $mysqli->query($sql3); if (!$mysqli->errno) { $mysqli->commit(); echo 'ok'; } else { echo 'err'; $mysqli->rollback(); }
Dans l'exemple ci-dessus, si $sql2 ne parvient pas à s'exécuter, $sql1 sera toujours exécuté. Pourquoi?
Parce que lorsque rename est exécuté, mysql exécutera d'abord commit puis renommera par défaut.
Remarque
Seules les tables de données de type INNODB et BDB dans MYSQL peuvent prendre en charge le traitement des transactions ! Les autres types ne sont pas pris en charge !
*** : Généralement, le moteur par défaut de la base de données MYSQL est MyISAM. Ce moteur ne prend pas en charge les transactions ! Si vous souhaitez que MYSQL prenne en charge les transactions, vous pouvez le modifier manuellement vous-même :
La méthode est la suivante : 1. Modifiez le fichier c:/appserv/mysql/my.ini, recherchez skip-InnoDB, ajoutez # devant et enregistrez le fichier .
2. Saisissez : services.msc pendant le fonctionnement pour redémarrer le service mysql.
3. Accédez à phpmyadmin, mysql->show moteurs; (ou exécutez mysql->show variables comme 'have_%';), vérifiez InnoDB pour OUI, ce qui signifie que la base de données prend en charge InnoDB.
Cela signifie que les transactions transactionnelles sont prises en charge.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

L'un des changements majeurs introduits dans MySQL 8.4 (la dernière version LTS en 2024) est que le plugin « MySQL Native Password » n'est plus activé par défaut. De plus, MySQL 9.0 supprime complètement ce plugin. Ce changement affecte PHP et d'autres applications

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

CMS signifie Système de gestion de contenu. Il s'agit d'une application logicielle ou d'une plate-forme qui permet aux utilisateurs de créer, gérer et modifier du contenu numérique sans nécessiter de connaissances techniques avancées. Le CMS permet aux utilisateurs de créer et d'organiser facilement du contenu tel que du texte, des images, des vidéos et des documents, et de le publier sur des sites Web ou d'autres plateformes numériques.

Les tableaux sont des structures de données linéaires utilisées pour traiter les données dans la programmation. Parfois, lorsque nous traitons les tableaux, nous devons ajouter de nouveaux éléments au tableau existant. Dans cet article, nous discuterons de plusieurs façons d'ajouter des éléments à la fin d'un tableau en PHP, avec des exemples de code, une sortie et une analyse de complexité du temps et de l'espace pour chaque méthode. Voici les différentes façons d'ajouter des éléments à un tableau: Utilisez des crochets [] En PHP, la façon d'ajouter des éléments à la fin d'un tableau est d'utiliser des crochets []. Cette syntaxe ne fonctionne que dans les cas où nous ne voulons ajouter qu'un seul élément. Ce qui suit est la syntaxe: $ array [] = valeur; Exemple
