阅读模式:

使用php最新的PDO方式连接mysql数据库

查看:12042  回复:0  类型:  来源:php自学网  标签 mysql

        php中有mysql、mysqli和pdo三中方式进行数据库的连接操作,其中mysql方式已经不推荐使用,一些高的php版本已经不开始支持,推荐使用pdo方式连接,而mysqli的连接方式只是为了让程序开发者们更加容易的从mysql过度到pdo。

        pdo是php提供的轻量级连接数据的接口,在php5.1之后的版本中使用,pdo方式好处是比之前的mysql方式更加安全兼容性好,可以使用同样的方式连接Oracle、mssql等数据库。

一、连接数据库代码:

$db_ms='mysql';  //数据库类型
$db_host='localhost';  //主机地址
$db_user='root';  //数据库账号
$db_pass='test';  //数据库密码
$db_name='test'; //数据库名
//拼接数据库主机信息
$dbh=$db_ms.':host='.$db_host.';'.'dbname='.$db_name;
try{
    //开始连接数据库
   $dbh = new PDO($dbh,$db_user,$db_pass);
   //echo '连接成功';
   //设置字符集
   $dbh -> query('set names utf8');
}catch(PDOException $e){
    //连接失败错误提示
  die('error:'.$e->getMessage());
}

二、pdo方式常用的增删该查方法

       query() 执行一条sql语句,获取结果集

        fetch()  从结果集中获取一行数据

        fetchAll() 获取所有行,并返回数据

        exec()  执行一条sql语句,返回影响行数

        2.1 query()和fetch()查询单条数据结果

//sql举例
$sql = "select * from test";
$res = $dbh->query($sql);
$data = $res -> fetch();

        2.2 query()和fetchAll()查询多条数据结果

//sql举例
$sql = "select * from test";
$res = $dbh->query($sql);
$data = $res -> fetchAll();

        2.3 exec() 执行增加、删除、更新语句

//sql举例
$sql1 = "update test set name='name' where id =1";
$dbh->exec($sql1);

$sql1 = "delete from test where id =1";
$dbh->exec($sql1);

$sql1 = "insert into test (name)values('test')";
$dbh->exec($sql1);

        2.4 pdo自带防止sql注入预处理,无需再对用户输入数据过滤操作

$sql = "select * from test where username = ? and password = ?"; 
$res = $dbh -> prepare($sql);//预处理sql
$res -> execute(array('admin','123456'));//传递参数
$data = $res -> fetch();


三、pdo类

<?php

class dbPdo
{
    public static $db = false;

    // DB连接
    public static function dbConnect()
    {
        try {
            self::$db = new PDO(DB_MS, DB_USER, DB_PASS);
            self::$db->query('set names utf8mb4');
            self::$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
        } catch (PDOException $e) {
            die('error:' . $e->getMessage());
        }
    }

    // DB查询单条数据
    public static function fetch($sql, $params = [])
    {
        if (!self::$db) {
            self::dbConnect();
        }
        if (empty($params)) {
            return self::$db->query($sql)->fetch();
        } else {
            $res = self::$db->prepare($sql);
            $res->execute($params);
            return $res->fetch();
        }
    }

    // DB查询多条数据
    public static function fetchAll($sql, $params = [])
    {
        if (!self::$db) {
            self::dbConnect();
        }
        if (empty($params)) {
            return self::$db->query($sql)->fetchAll();
        } else {
            $res = self::$db->prepare($sql);
            $res->execute($params);
            return $res->fetchAll();
        }
    }

    // DB执行一条sql
    public static function exec($sql, $params = [], $id = false)
    {
        if (!self::$db) {
            self::dbConnect();
        }
        if (empty($params)) {

            if ($id) {
                self::$db->exec($sql);
                return self::$db->lastInsertId();
            } else {
                return self::$db->exec($sql);
            }
        } else {
            $res = self::$db->prepare($sql);
            if ($id) {
                $res->execute($params);
                return $res->lastInsertId();
            } else {
                return $res->execute($params);
            }

        }
    }

    // DB开启事务
    public static function beginTransaction()
    {
        if (!self::$db) {
            self::dbConnect();
        }
        self::$db->beginTransaction();
    }

    // DB提交事务
    public static function commit()
    {
        if (!self::$db) {
            self::dbConnect();
        }
        self::$db->commit();
    }

    // DB回退事务
    public static function rollBack()
    {
        if (!self::$db) {
            self::dbConnect();
        }
        self::$db->rollBack();
    }

}
分享到:
0 0

*有问题之处烦请在评论中指出非常感谢!
不是我想要的内容,继续搜索:

扫描二维码手机查看

发布评论:


登录:
  表情:
评论话题
推荐阅读:
csv文件一键导入数据到mysql数据库   阅读:7820javascript点击复制内容   阅读:8239给网站添加一键新浪微博登录的功能   阅读:7442web性能测试工具ab的测试方法   阅读:5552给 centos 7 安装桌面环境   阅读:18145用php从1乘到100的值   阅读:7345移动端js触摸touch详解(附带案例源码)   阅读:18828栈和堆的区别   阅读:6010mongodb设置shell开机启动脚本   阅读:11770centos 7 安装 samba 服务   阅读:7896ajax+php 实现一个简单的在线聊天室功能(附带源码)   阅读:11003Mysql在大型网站的应用架构演变   阅读:5496mysql共享锁和排他锁详解   阅读:8625php设置cookie为HttpOnly防止XSS攻击   阅读:14295php设置cookie为HttpOnly防止XSS攻击   阅读:14295centos 7 安装 samba 服务   阅读:7896封装php redis缓存操作类   阅读:10515mysql数据库性能的基本优化   阅读:5276php设置cookie为HttpOnly防止XSS攻击   阅读:14295Mysql在大型网站的应用架构演变   阅读:5496PHP 鸟哥:我也曾经是“不适合”编程的人   阅读:16536移动端自适应rem原理   阅读:10695linux教程,鸟哥私房菜(pdf全集)   阅读:11541centos 7 安装 redis 3.2.9   阅读:7677人性漫画:打工与创业的残酷区别   阅读:5892javascript对cookie操作详细代码函数   阅读:6207面试的时候和你谈理想,是理想or入坑?   阅读:12323php swoole搭建简单的聊天室   阅读:5945mysql5.7主从同步中binlog同步模式详解   阅读:9339centos7中颁发CA证书并开启web https   阅读:9711javascript点击复制内容   阅读:8239栈和堆的区别   阅读:6010Nginx 配置文件详解   阅读:6121mysql5.7开启sql日志的配置   阅读:10859centos7.3安装mongodb3.6   阅读:8842nginx安装redis模块   阅读:7680linux rarcrack破解rar、zip和7z压缩包简单密码的工具   阅读:19617shell脚本统计当前服务器并发连接数   阅读:8967php设置cookie为HttpOnly防止XSS攻击   阅读:14295霍金24岁博士毕业论文在线预览   阅读:6610php 使用 smtp.php 类在线发送邮件功能   阅读:6758centos7开启交换内存   阅读:12579centos 7 修改系统屏幕分辨率   阅读:50285php翻转字符串   阅读:4512centos 7 设置 nginx-1.11.10 开机启动   阅读:9083mysql数据一键导出到csv文件   阅读:6813centos7中颁发CA证书并开启web https   阅读:9711Nginx 配置文件详解   阅读:6121centos 7搭建zabbix3.4   阅读:7653javascript获取两个日期间的所有日期   阅读:7910