PHP PDO 连接操作数据库
短信预约 -IT技能 免费直播动态提醒
PHP PDO 连接操作数据库
目录:
PDO链接mysql
// PDO连接数据库// 创建三个变量存放数据库地址,用户名和密码$servername = '192.168.20.222';$username = 'root';$password = 'root';// 创建链接try { $conn = new PDO("mysql:host=$servername",$username,$password); echo '数据库连接成功';}catch (PDOException $e){ echo $e->getMessage();}
PDO断开链接
// 断开连接$conn = null;
PDO创建数据库
$servername = '192.168.20.222';$username = 'root';$password = 'root';try { $conn = new PDO("mysql:host=$servername",$username,$password); // 设置PDO为异常模式 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // 设置创建数据库的sql语句 $sql = 'create database phplx'; // 使用exec();因为没有返回结果 $conn->exec($sql); echo '数据库创建成功';}catch (PDOException $e){ echo $e->getMessage();}
PDO创建表
$servername = '192.168.20.222';$username = 'root';$password = 'root';$dbname = 'phplx';try { // 链接数据库并选择数据库名 $conn = new PDO("mysql:host=$servername;dbname=$dbname",$username,$password); // 设置PDO为异常模式 $conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); // 设置sql语句: $sql = 'create table lxphp( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(30) NOT NULL, lastname VARCHAR(30) NOT NULL, email VARCHAR(50), reg_date TIMESTAMP)'; // 使用exec()因为没有返回值 $conn->exec($sql); echo '数据表创建成功';}catch (PDOException $e){ echo $e->getMessage();}// 关闭数据库连接$conn = null;
PDO插入数据
$servername = '192.168.20.222';$username = 'root';$passwd = 'root';$dbname = 'phplx';try { $conn = new PDO("mysql:host=$servername;dbname=$dbname",$username,$passwd); $conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $sql = "insert into lxphp(firstname, lastname, email)values ('zhang','san','1666666@qq.com')"; $conn->exec($sql); echo '插入成功';}catch (PDOException $e){ echo $e->getMessage();}$conn = null;
插入多条数据:
$servername = '192.168.20.222';$username = 'root';$passwd = 'root';$dbname = 'phplx';try { $conn = new PDO("mysql:host=$servername;dbname=$dbname",$username,$passwd); // 设置异常模式 $conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); // 开始事务 $conn->beginTransaction(); // 执行sql $conn->exec("insert into lxphp(firstname, lastname, email) values ('li','si','23865516@qq.com')"); $conn->exec("insert into lxphp(firstname, lastname, email) values ('wang','wu','12345678@qq.com')"); $conn->exec("insert into lxphp(firstname, lastname, email) values ('da','niu','87654321@qq.com')"); // 结束事务 $conn->commit(); echo '插入成功';}catch (PDOException $e){ // 如果出现故障,则回滚事务 $conn->rollBack(); echo $e->getMessage();
预处理:
$servername = '192.168.20.222';$username = 'root';$passwd = 'root';$dbname = 'phplx';try { $conn = new PDO("mysql:host=$servername;dbname=$dbname",$username,$passwd); $conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); // 预处理sql并绑定参数 $stmt = $conn->prepare("insert into lxphp(firstname, lastname, email) values (:firestname,:lastname,:email)"); $stmt->bindParam(':firestname',$firestname); $stmt->bindParam(':lastname',$lastname); $stmt->bindParam(':email',$email); // 插入数据 $firestname = 'zhang'; $lastname = 'san'; $email = '123456@qq.com'; $stmt->execute(); // 插入第二条数据 $firestname = 'li'; $lastname = 'si'; $email = '654321@qq.com'; $stmt->execute(); // 常如第三条数据 $firestname = 'wang'; $lastname = 'wu'; $email = '123466789@qq.com'; $stmt->execute(); echo '数据已插入';}catch (PDOException $e){ echo $e->getMessage();}$conn = null;
PDO查询数据
try { $sql="select * from cash"; // 有返回结果集,使用query函数,该函数返回结果为预处理对象。 $stmt = $conn->query($sql); // 查询多条数据,设置返回为关联数组 $res = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($res as $v){ echo 'id为:'.$v['id'].',名字为:'.$v['name'].',财产为:'.$v['money'].'
'; }}catch (PDOException $e){ echo $e->getMessage();}
PDO事务
// 连接数据库$servername = '127.0.0.1';$username = 'admin';$password = '123456';$dbname='www_myblog_com';try { $conn = new PDO("mysql:host=$servername;dbname=$dbname",$username,$password); $conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); // 关闭pdo自动提交 $conn->setAttribute(PDO::ATTR_AUTOCOMMIT,0); // 开启事务 $conn->beginTransaction(); // 张三转出100元钱 $sql = "update cash set money=money-100 where name='张三'"; $row = $conn->exec($sql); if (!$row){ // 若未成功转出,即$row不存在,则抛出异常 throw new PDOException('转出失败!'); } // 若张三成功转出,李四加100元钱 $sql = "update cash set money=money+100 where name='李四'"; $row = $conn->exec($sql); if (!$row){ throw new PDOException('转入失败!'); } // 若两步都没问题则提交事务 $conn->commit(); echo '汇款成功';}catch (PDOException $e){ echo $e->getMessage(); // 出现错误则回滚事务 $conn->rollBack();}// 开启自动提交$conn->setAttribute(PDO::ATTR_AUTOCOMMIT,1);
PDO预处理
什么是预处理?为了提高效率和防止sql注入等安全问题,使用预处理令mysql服务先对sql语句进行编译,等待传入参数,那么接下来我们传入参数时将不会在编译,参数里的逻辑运算将不会再执行。
?
:占位符,用来代表预处理的参数。
:
:一个冒号,用来声明预处理变量。
prepare()
:准备函数,将sql语句传递给sql服务端进行编译,并且返回预处理对象。
execute()
:执行函数,将参数传递给预处理并执行。
预处理插入数据(占位符实例):
include ('pdo.php');try { // ?为占位符 $sql = "insert into cash(name, money) VALUE (?,?)"; // 准备函数 $stmt = $conn->prepare($sql); // 绑定预处理变量,三个参数,第一个为占位符,第二个为变量,第三个为数据类型一般不写 // 这里1代表第一个占位符 $stmt->bindParam(1,$name); $stmt->bindParam(2,$money); // 参数赋值 $name = '王五'; $money = 2000; // 开始执行 $stmt->execute();// // 简写,用该方法可以直接插入不绑定,使用?占位符的话,列表为索引列表// $stmt->execute(array('老刘','3000')); echo '数据已插入';}catch (PDOException $e){ echo $e->getMessage();}
预处理查询(使用单冒号)
fetch()、fetchall()
:提取一条数据、提取多条数据,可设置返回什么样的数组(一搬为’PDO::FETCH_ASSOC’关联数组)。
include ('pdo.php');try { $sql = "select * from cash where id=:id"; // 准备函数 $stmt = $conn->prepare($sql); // 绑定变量 $stmt->bindParam(':id',$id); // 变量赋值 $id=1; // 执行查询 $stmt->execute(); // fetch()提取一条数据fetchall()提取多条数据,提取数据用res变量接收 // 这里的'PDO::FETCH_ASSOC'代表结果设为关联数组返回 $res = $stmt->fetch(PDO::FETCH_ASSOC); var_dump($res);// // 返回查询结果为几条数据 // var_dump($stmt->rowCount());}catch (PDOException $e){ echo $e->getMessage();}
来源地址:https://blog.csdn.net/m0_53820621/article/details/126372547
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341