PHP PDO的简单使用(query(),exec(),prepare(),Transaction,行锁)
来源:互联网 发布:岗位优化人员优化方案 编辑:程序博客网 时间:2024/05/21 18:31
<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important;"><pre name="code" class="html"><pre name="code" class="php"><html> <body> <?php #数据库连接 $dbtype = 'mysql'; $host = 'localhost'; $db = 'test'; $user = 'root'; $psw = 'china0913'; $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()); } ?> </body></html>
0 0
- PHP PDO的简单使用(query(),exec(),prepare(),Transaction,行锁)
- PDO及PDO -> prepare的简单使用
- PDO及PDO -> prepare的简单使用
- PHP PDO exec, query, prepared statement
- PHP PDO prepare 不能使用 ?=? 这样的 预编译
- PHP+MYSQL中使用PDO的query方法
- PDO 使用prepare执行准备好的查询
- [PHP]PDO的使用
- PHP PDO的使用
- PHP PDO的使用
- php当中多次使用PDO::query ( string $statement ) 报non-object错误的解决方法
- php 基于PDO下的exec()函数查询
- PHP PDO使用prepare()方法和execute()方法执行SQL语句
- PHP中PDO的使用
- PHP中PDO的使用
- php中pdo的使用
- php pdo 简单使用 (一)
- php pdo 简单使用 (二)
- Eclipse自定义注释(另一个账号)
- CocoaPods的安装使用和常见问题
- NSUserDefaults
- Android_自实现用户行为统计
- liunx 安装和遇到问题
- PHP PDO的简单使用(query(),exec(),prepare(),Transaction,行锁)
- sublime host key verification failed
- iOS WKWebView添加网页加载进度条
- ios10 部分app无法连接到网络
- MySQL数据库:SQL语句
- 使用Maven
- getDimension,getDimensionPixelOffset和getDimensionPixelSize
- Canvas基础图形的绘制
- opencv2学习(五)——reshape函数的使用