PHP PDO的简单使用(query(),exec(),prepare(),Transaction,行锁) <?php #数据库连接 $dbtype = 'mysql'; $host = 'localhost'; $db = 'test'; $user = 'root'; $psw = '19sucai'; $dsn = $dbtype . ':host=' . $host . ';' . 'dbname=' . $db; try { $dbh = new PDO($dsn, $user, $psw, array(PDO::ATTR_PERSISTENT=>true)); echo '连接成功<br>'; } catch(Exception $e) { die('Connect Failed Message: ' . $e->getMessage()); } #使用query函数查询 $sql = 'SELECT * FROM user'; $query = $dbh->query($sql); $query->setFetchMode(PDO::FETCH_ASSOC); //设置结果集返回格式,此处为关联数组,即不包含index下标 $rs = $query->fetchAll(); var_dump($rs); #使用exec函数进行INSERT,UPDATE,DELETE,结果返回受影响的行数 $sql = 'INSERT INTO user (`userName`, `userPassword`, `userAge`) SELECT (MAX(userId) + 1), \'123456\', 18 FROM user'; //插入一行用户数据,其中userName使用userId最大值+1 // $rs = $dbh->exec($sql); // var_dump($rs) . '<br>'; #使用prepareStatement进行CURD $sql = 'SELECT * FROM user WHERE userId = ?'; $stmt = $dbh->prepare($sql); $stmt->bindParam(1, $userId); //绑定第一个参数值 $userId = 1; $stmt->execute(); $stmt->setFetchMode(PDO::FETCH_ASSOC); $rs = $stmt->fetchAll(); var_dump($rs); #使用事务 try { $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //设置错误模式,发生错误时抛出异常 $dbh->beginTransaction(); $sql1 = 'SELECT bookNum FROM book WHERE bookId = ? FOR UPDATE'; //此处加上行锁,可以对bookNum做一些判断,bookNum>1,才做下一步更新操作 $sql2 = 'UPDATE book SET bookNum=bookNum-1 WHERE bookId = ?'; //加上行锁后,如果user1在买书,并且user1的买书过程没有结束,user2就不能执行SELECT查询书籍数量的操作,这样就保证了不会出现只有1本书,却两个人同时买的状况 $stmt1 = $dbh->prepare($sql1); $stmt2 = $dbh->prepare($sql2); $stmt1->bindParam(1, $userId); $stmt2->bindParam(1, $userId); $userId = 1; $stmt1->execute(); $stmt2->execute(); $dbh->commit(); } catch(Exception $e) { $dbh->rollBack(); die('Transaction Error Message: ' . $e->getMessage()); } ?>
相关推荐
PHP PDO(PHP Data Objects)是PHP的一个扩展,用于提供数据库访问...通过以上内容,我们可以看出PHP PDO与MySQL结合使用,能够实现高效、安全的数据库操作,无论是简单的CRUD还是复杂的业务逻辑,都能得到很好的支持。
2. 执行查询:PDO提供了`query()`、`exec()`等方法执行SQL查询。例如,使用`query()`获取数据: ```php $stmt = $pdo->query('SELECT * FROM users'); $results = $stmt->fetchAll(PDO::FETCH_ASSOC); ``` 3. ...
PDO提供了多种执行SQL查询的方法,例如`query()`用于执行单条SQL语句并返回结果集,`exec()`用于执行修改数据的SQL语句(如INSERT、UPDATE、DELETE),`prepare()`则用于预处理SQL语句。 预处理语句是PDO的一个重要...
### PHP使用PDO连接SQLite3知识点解析 #### 一、引言 在Web开发领域中,PHP作为一种常用的服务器端脚本语言,与各种数据库系统的交互能力是其重要特性之一。其中,SQLite作为一款轻量级的数据库系统,在不需要复杂...
- **PDOStatement**是通过`PDO->query()`或`PDO->prepare()`创建的对象,用于执行SQL语句。 - **常用方法**: - `PDOStatement->execute()`:执行已准备好的语句。 - `PDOStatement->fetchAll()`:获取所有结果...
- **事务处理**:PDO支持通过`beginTransaction()`、`commit()`和`rollBack()`进行事务管理。 - **错误处理**:可以通过设置PDO实例的错误模式来改变错误处理方式。 #### 六、总结 PDO作为PHP中的数据库访问层,极...
**PHP PDO(PHP Data Objects)** 是PHP语言中用于数据库访问的一个扩展,它提供了一个数据库访问的抽象层,使得开发者可以使用相同的API来操作多种不同的数据库系统,如MySQL、PostgreSQL、SQLite等。PDO提供了...
$stmt = $this->pdo->prepare($sql); foreach ($params as $key => $value) { $stmt->bindValue("$key", $value); } $stmt->execute(); return $stmt->fetchAll(); } // 其他类似的方法,如insert、update...
PDO 提供了多种方法来执行 SQL 查询,包括 `PDO::query()`、`PDO::exec()` 和 `PDO::prepare()`。 - **PDO::query()** 用于执行简单的 SELECT 语句,并立即返回结果集。如果执行的是其他类型的 SQL 语句,则返回 ...
PDO(PHP Data Objects)是PHP中的一个数据库访问接口,它提供了一个统一的API来与多种不同的数据库管理系统(DBMS)进行交互。...无论是小型项目还是大型应用,都可以考虑使用PDO来构建数据库交互层。
PDO::exec 是 PHP 中用于执行 SQL 语句的方法,它主要适用于执行那些不会返回结果集的 SQL 操作,比如 INSERT、UPDATE 和 DELETE。这个方法在 PHP 5.1.0 版本及以上以及 PECL pdo 拓展 0.1.0 版本及以上可用。 **...
$pdo->beginTransaction(); try { // 数据库操作 $pdo->commit(); } catch (Exception $e) { $pdo->rollback(); throw $e; } ``` 7. **结果集处理**:PDO提供了多种方式获取查询结果,如`fetch()`, `...
3. **执行SQL语句**:可以使用`query()`方法执行查询,`exec()`方法执行非查询操作,如INSERT、UPDATE、DELETE等。 ```php $stmt = $pdo->query('SELECT * FROM users'); ``` 4. **处理结果集**:对于查询操作,可以...
假设我们有一个简单的用户表 `users`,包含字段 `id`, `username`, `email`,以下是如何使用 PDO 进行增删改查的示例: 1. **插入记录**: ```php $stmt = $pdo->prepare("INSERT INTO users (username, email) ...
在PDO中,可以使用`beginTransaction()`, `commit()`, 和 `rollback()` 方法。例如: ```php $pdo->beginTransaction(); try { // 执行SQL操作 $pdo->exec("..."); $pdo->commit(); } catch (PDOException $e...
- **执行查询**:使用`query()`方法执行简单的SELECT语句。 ```php $stmt = $pdo->query("SELECT * FROM users"); while ($row = $stmt->fetch()) { echo $row['name'] . "\n"; } ``` ##### 4. 预处理语句 - ...
使用PDO的`query()`或`prepare()`方法执行SELECT语句: ```php <?php $results = $db->query('SELECT * FROM users'); foreach ($results as $row) { echo "ID: " . $row['id'] . ", Name: " . $row['name'] . ", ...
在PDO中,你可以使用`beginTransaction()`开始一个事务,`commit()`提交事务,如果出现错误,使用`rollback()`回滚事务。例如: ```php $pdo->beginTransaction(); try { // 执行数据库操作 $pdo->exec(...
本篇文章将通过一个简单的实例,介绍如何使用PDO在PHP中连接数据库并插入数据。 首先,我们需要创建一个配置文件`pdo_config.php`,用于存储数据库连接的相关信息: ```php <?php $db_Type = "mysql"; // 数据库...
使用`exec()`或`query()`方法插入数据: ```php <?php $stmt = $db->prepare("INSERT INTO users (name, email) VALUES (:name, :email)"); $stmt->bindParam(':name', $name); $stmt->bindParam(':email', $email)...