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