pdo接口用法和mysql相关扩展

参考:

https://www.cnblogs.com/fuyunlin/articles/13862293.html (博客园:pdo对象的使用)

https://blog.csdn.net/a7442358/article/details/45268489(CSDN:bindValue和bindParam的区别)

pdo基本用法

//插入
try {
    //1 先发送一条SQL语句让服务器去编译 值用问号代替 并返回一个预处理对象 赋值给$stmt
    $stmt = $pdo->prepare('insert into yunu_diy_article(ftitle,author) value (?,?)');
    var_dump($stmt);

    //2 绑定参数 对应的是问号写法 从1开始 只能绑定到变量名
    $stmt->bindParam(1,$ftitle);
    $stmt->bindParam(2,$author);

    //3 给变量赋值
    $ftitle = '孙权';
    $author = '孙仲谋';

    //4 执行一条预处理SQL
    $stmt->execute();

    //再插入一条
    $ftitle = '诸葛亮';
    $author = "诸葛孔明";
    $stmt->execute();
} catch (PDOException $e) {
    echo $e->getMessage();
}

//简洁写法
try {
    //1定义一条 问号 占位符的预处理语句SQL
    $stmt = $pdo->prepare('insert into yunu_diy_article(ftitle,author) value (?,?)');
    //2 绑定和执行一起操作  问号占位符传递索引数组
    $stmt->execute(['汉武帝','刘彻']);
} catch(PDOException $e) {
    echo $e->getMessage();
}

//常规写法
try {
    //1定义一条 命名 占位符的预处理语句SQL
    $stmt = $pdo->prepare('insert into yunu_diy_article(ftitle,author) value (:ftitle,:author)');

    //2 绑定参数到变量
    $stmt->bindParam(':ftitle',$ftitle);
    $stmt->bindParam(':author',$author);

    //3 给变量赋值
    $ftitle = '胡汉三';
    $author = "刘三姐";

    //4 执行预处理SQL语句
    $stmt->execute();

} catch(PDOException $e) {
    echo $e->getMessage();
}

//简洁写法
try {
    //1定义一条命名占位符的预处理语句SQL
    $stmt = $pdo->prepare('insert into yunu_diy_article(ftitle,author) value (:ftitle,:author)');
    //2 绑定和执行一起操作  命名占位符 传递关联数组
    $stmt->execute([':ftitle'=>'汉武帝',':author'=>'刘彻']);
} catch(PDOException $e) {
    echo $e->getMessage();
}

//删除
try {
    //删除操作  命名占位符
    $stmt = $pdo->prepare('delete from yunu_diy_article where conid = :num ');
    $stmt->execute(['num' =>67]);
 
    //删除操作 问号占位符
    $stmt = $pdo->prepare('delete from yunu_diy_article where conid = ?');
    $stmt->execute([65]);//删除id为65的一行数据
     
} catch(PDOException $e) {
    echo $e->getMessage();
}

//更新
try {
    //更新操作 命名占位符
    $stmt = $pdo->prepare('update yunu_diy_article set ftitle=:ftitle,author=:author where conid = :num ');
    $stmt->execute([':ftitle' =>'猪八戒',':author'=>'天蓬元帅',':num'=>66]);

    //更新操作 问号占位符
    $stmt = $pdo->prepare('update yunu_diy_article set ftitle=?,author=? where conid=?');
    $stmt->execute(['孙悟空','齐天大圣',66]);
} catch(PDOException $e) {
    echo $e->getMessage();
}
//查询
try {
    //1 准备SQL语句 并得到预处理对象
    $stmt = $pdo->prepare('select ftitle,author from yunu_diy_article');
    //2 执行预处理语句 结果集已经放回给$stmt
    $stmt->execute();//执行完成后 就获得了一个结果集 结果集就存放在$stmt对象上
    //3 获取结果集中的一行 或者 全部
    $result = $stmt->fetch(PDO::FETCH_OBJ);//获取结果集中的一行数据   第一个参数设置返回值的格式
    $result = $stmt->fetchAll(PDO::FETCH_OBJ);//获取结果集中的所有数据
    //fetch / fetchAll(参数1:设置结果集的提取模式) 常用的有四种
    //1. PDO::FETCH_BOTH 默认的   返回格式:关联数组+索引数组
    //2. PDO::FETCH_ASSOC 返回格式:关联数组
    //3. PDO::FETCH_NUM  返回格式:索引数组
    //4. PDO::FETCH_OBJ   返回格式:对象形式
    var_dump($result);
} catch(PDOException $e) {
    echo $e->getMessage();
}
 

try {
    //1 准备SQL语句 并得到预处理对象
    $stmt = $pdo->prepare('select ftitle,author from yunu_diy_article');
    //2 执行预处理语句 结果集已经放回给$stmt
    $stmt->execute();//执行完成后 就获得了一个结果集 结果集就存放在$stmt对象上
    //3 绑定列
    $stmt->bindColumn('ftitle',$ftitle);
    $stmt->bindColumn('author',$author);
    while ($stmt->fetch()) {
        echo $ftitle .'的作者是:'. $author.'</br>';
    }
} catch(PDOException $e) {
    echo $e->getMessage();
}

 

mysql扩展

概念扫盲

dpo 即PHP Data Objects PHP数据对象,是PHP应用中的一个数据库抽象层规范。有多种数据库的实现。

pdo_mysql 是mysql的pdo实现

mysql 也叫 Original MySQL,PHP4版本的MYSQL扩展,从PHP5起已经被废弃,并别从PHP7开始已经被移除。

mysqli 叫做 “MySQL增强扩展”。

mysqlnd 即MYSQL NATIVE DIRVER 叫做MYSQL “官方驱动”或者更加直接点的叫做“原生驱动”

在PHP拓展的角度上看,MYSQL和MYSQLi还是比较上层的拓展,依赖更底层的库去连接和访问数据库。上文所说的MYSQLND 就是所说的底层的数据库驱动。

--enable-pdo 
--with-pdo-mysql
--with-mysqli
--enable-mysqlnd 

 

posted @ 2020-12-22 20:02  小匡程序员  阅读(208)  评论(0编辑  收藏  举报