Maison développement back-end tutoriel php Comparaison de l'utilisation et des opérations des transactions PHP mysql et mysqli

Comparaison de l'utilisation et des opérations des transactions PHP mysql et mysqli

May 26, 2017 pm 04:12 PM
mysql mysqli php

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();
}
Copier après la connexion

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();
}
Copier après la connexion

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);
Copier après la connexion

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();
}
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

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.

Comment corriger les erreurs mysql_native_password non chargé sur MySQL 8.4 Comment corriger les erreurs mysql_native_password non chargé sur MySQL 8.4 Dec 09, 2024 am 11:42 AM

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

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

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

Comment analysez-vous et traitez-vous HTML / XML dans PHP? Comment analysez-vous et traitez-vous HTML / XML dans PHP? Feb 07, 2025 am 11:57 AM

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

Programme PHP pour compter les voyelles dans une chaîne Programme PHP pour compter les voyelles dans une chaîne Feb 07, 2025 pm 12:12 PM

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

7 fonctions PHP que je regrette de ne pas connaître auparavant 7 fonctions PHP que je regrette de ne pas connaître auparavant Nov 13, 2024 am 09:42 AM

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.

Top 10 des plateformes CMS PHP pour les développeurs en 2024 Top 10 des plateformes CMS PHP pour les développeurs en 2024 Dec 05, 2024 am 10:29 AM

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.

Comment ajouter des éléments à la fin d'un tableau en php Comment ajouter des éléments à la fin d'un tableau en php Feb 07, 2025 am 11:17 AM

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

See all articles