Home Backend Development PHP Tutorial php--PDO transactions and automatic submission

php--PDO transactions and automatic submission

Nov 22, 2016 am 09:35 AM
pdo php

Connected through PDO. Before starting to query, you must first understand how PDO manages transactions. Transactions support four major characteristics (ACID): Atomicity, Consistency, Isolation and Durability. In layman's terms, any operation performed within a transaction, even if performed in stages, is guaranteed to be safely applied to the database and committed without interference from other connections. Transaction operations can also be automatically undone on request (assuming they haven't been committed yet), making it easier to handle errors in scripts.

Transactions are usually implemented by "accumulating" a batch of changes and then making them effective at the same time; the advantage of doing this is that it can greatly improve the efficiency of these changes. In other words, transactions can make scripts faster and potentially more robust (although transactions need to be used correctly to gain such benefits).

Unfortunately, not every database supports transactions, so PDO needs to run in so-called "autocommit" mode when the connection is first opened. Autocommit mode means that each query run has its own implicit transaction if the database supports it, or none if the database does not support transactions. If a transaction is required, it must be started using the PDO::beginTransaction() method. If the underlying driver does not support transactions, a PDOException is thrown (this is a serious error condition regardless of error handling settings). Once a transaction is started, it can be completed with PDO::commit() or PDO::rollBack(), depending on whether the code in the transaction ran successfully.

PDO only checks whether it has transaction processing capabilities at the driver layer. If some runtime condition means that a transaction is not available, and the database service accepts a request to start a transaction, PDO::beginTransaction() will still return TRUE without error.

Trying to use transactions in a MyISAM data table in a MySQL database is a good example.

When the script ends or the connection is about to be closed, if there is an unfinished transaction, PDO will automatically roll back the transaction. This safety measure helps avoid inconsistencies if the script terminates unexpectedly - if the transaction is not committed explicitly, it is assumed that something went wrong, so a rollback is performed to keep the data safe.

Automatic rollback can only occur after starting a transaction through PDO::beginTransaction(). If you manually issue a query to start a transaction, PDO has no way of knowing it and can't roll it back if necessary.

Example #1 Executing batch processing in a transaction

In the following example, assume that a set of entries is created for a new employee and assigned an ID of 23. In addition to registering the person's basic data, it is also necessary to record his salary. It's simple to complete the two updates separately, but by enclosing them in PDO::beginTransaction() and PDO::commit() calls, you can ensure that others cannot see the changes until they are completed. If an error occurs, the catch block rolls back all changes that occurred since the transaction started and prints an error message.

<?php
    try {
        $dbh = new PDO(&#39;odbc:SAMPLE&#39;, &#39;db2inst1&#39;, &#39;ibmdb2&#39;,
            array(PDO::ATTR_PERSISTENT => true));
        echo "Connected\n";
    } catch (Exception $e) {
        die("Unable to connect: " . $e->getMessage());
    }
    try {
        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $dbh->beginTransaction();
        $dbh->exec("insert into staff (id, first, last) values (23, &#39;Joe&#39;, &#39;Bloggs&#39;)");
        $dbh->exec("insert into salarychange (id, amount, changedate)
            values (23, 50000, NOW())");
        $dbh->commit();
    } catch (Exception $e) {
        $dbh->rollBack();
        echo "Failed: " . $e->getMessage();
    }
?>
Copy after login

is not limited to making changes within a transaction, you can also issue complex queries to extract data, and you can use that information to build more changes and queries; when the transaction is active, you can ensure that others cannot do it while the operation is in progress. Make changes.


Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1663
14
PHP Tutorial
1263
29
C# Tutorial
1236
24
How do you parse and process HTML/XML in PHP? How do you parse and process HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Apr 05, 2025 am 12:04 AM

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

Explain late static binding in PHP (static::). Explain late static binding in PHP (static::). Apr 03, 2025 am 12:04 AM

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

PHP Program to Count Vowels in a String PHP Program to Count Vowels in a String Feb 07, 2025 pm 12:12 PM

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? Apr 03, 2025 am 12:03 AM

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.

PHP and Python: Comparing Two Popular Programming Languages PHP and Python: Comparing Two Popular Programming Languages Apr 14, 2025 am 12:13 AM

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

PHP in Action: Real-World Examples and Applications PHP in Action: Real-World Examples and Applications Apr 14, 2025 am 12:19 AM

PHP is widely used in e-commerce, content management systems and API development. 1) E-commerce: used for shopping cart function and payment processing. 2) Content management system: used for dynamic content generation and user management. 3) API development: used for RESTful API development and API security. Through performance optimization and best practices, the efficiency and maintainability of PHP applications are improved.

PHP: A Key Language for Web Development PHP: A Key Language for Web Development Apr 13, 2025 am 12:08 AM

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

See all articles