php操作MySQL数据库(2)――PDO方式

匿名 (未验证) 提交于 2019-12-02 22:06:11


$pdo = new PDO(“mysql:host=localhost; dbname=db_name”,username,password); 


$pdo -> query()    针对返回有结果的操作    适用于SELECT  $pdo -> exec()     针对没有返回结果的操作  适用于增删改 


$stmt -> fetch($mode)      获取一条数据  $stmt -> fetchAll($mode)   获取所有数据 

mode可选择 PDO::FETCH_ASSOC,结果变成关联数组


<?php  // PDO操作数据库例子(查询)  header("content-type:text/html;charset=utf-8");  // 连接数据库 $dsn = "mysql:host=localhost; dbname=test";  $pdo = new PDO($dsn,'root','123456789');   /*********** 执行SQL语句  *************/  // 设置字符集 $pdo -> exec("set names utf8");  $sql = "SELECT * FROM users"; $stmt = $pdo -> query($sql);  // 获取结果集 $data = $stmt -> fetchAll(PDO::FETCH_ASSOC);  var_dump($data); 





$pdo -> beginTransaction() 


$pdo -> rollback() 


$pdo -> commit() 


$pdo -> setAttribute(PDO::ATTR_AUTOCOMMIT,1) 


<?php header("content-type:text/html;charset=utf-8");  // 连接数据库 $dsn = "mysql:host=localhost; dbname=test"; $pdo = new PDO($dsn,'root','123456789');   // 执行SQL语句  // 设置字符集 $pdo -> exec("set names utf8");  // 开启事务 $pdo -> beginTransaction();  // SQL语句 $sql1 = "UPDATE users SET `money`=`money`+1 WHERE `id` = 1 "; $r1 = $pdo -> exec($sql1);  $sql2 = "UPDATE users SET `money`=`money`-1 WHERE `id` = 12 "; $r2 = $pdo -> exec($sql2);  // 做判断 if($r1 > 0 && $r2 > 0){     $pdo -> commit();     echo '操作成功'; }else{     $pdo -> rollback();     echo '操作失败'; }  $pdo -> setAttribute(PDO::ATTR_AUTOCOMMIT,1); 





1)$sql = “???”

SQL语句的VALUE里面的参数,使用问号代替。


$pdo -> prepare($sql) 


$stmt -> bindParam(参数位置 | 参数伪名, 变量名(需要有值))   $stmt -> bindValue(参数参数位置 | 参数伪名, 变量名(需要有值)| 具体的值) 


$stmt -> bindParam详解:

$sql = "UPDATE users SET `money`=100 WHERE id = :num ";  // 注意,这里必须先给$num赋值 $num = 3; $stmt -> bindParam(":num",$num);   另一种形式(占位符变成问号) $sql = "UPDATE users SET `money`=100 WHERE id = ? ";  // 注意,这里必须先给$num赋值 $num = 3; $stmt -> bindParam(":num",$num); 


$stmt -> bindValue详解

在使用bindValue绑定变量后,即使在执行execute之前改变了该变量的值,那么结果也不会变。

详细请看这里这里写链接内容


$stmt -> execute() 


$stmt -> fetch($mode)      获取一个结果  $stmt -> fetchAll($mode)   获取所有结果 

mode可选择 PDO::FETCH_ASSOC,结果变成关联数组


<?php  // MySQLi预处理控制例子(查询) header("content-type:text/html;charset=utf-8");   // 连接数据库 $dsn = "mysql:host=localhost; dbname=test"; $pdo = new PDO($dsn,'root','123456789');  // 设置字符集 $pdo -> exec("set names utf8");   // SQL语句 $sql = "SELECT * FROM users WHERE id > :num ";  // 创建预编译对象 $stmt = $pdo -> prepare($sql);  // 参数绑定 $num = 3; $stmt -> bindParam(":num",$num);  // 执行SQL语句 $stmt -> execute();  // 获取结果集 $data = $stmt -> fetchAll(PDO::FETCH_ASSOC);  var_dump($data); 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!