一 、 PDO的连接

  $host = "localhost";
$dbname = "hejuntest";
$username = "root";
$pwd = "";
$dsn = "mysql:host=$host;dbname=$dbname";
$opt = array(PDO::ATTR_PERSISTENT => TRUE); //持久链接
try{
$pdo = new PDO($dsn , $username , $pwd , $opt);
}catch(PDOException $e){
echo 'connect error~ ' . $e->get_Message();
}

二 、PDO的增、删、改

    $sql = "update student set name='xiaoran' where id in(1,2) ";
$affted_rows = $pdo->exec($sql); //返回受影响的行数

三、 PDO的查

  • 使用fetch()
    $sql = "select * from student";
$pdostatement = $pdo->query($sql);
echo '<table>';
while(list($id , $name , $age , $class) = $pdostatement->fetch(PDO::FETCH_NUM)){
echo '<tr>';
echo '<td>' . $id .'</td>';
echo '<td>' . $name .'</td>';
echo '<td>' . $age .'</td>';
echo '<td>' . $class .'</td>';
echo '</tr>';
}
echo '</table>';
  • 使用fetchAll()
    $sql = "select * from student";
$pdostatement = $pdo->query($sql);
$data = $pdostatement->fetchAll(PDO::FETCH_ASSOC);
echo '<table>';
foreach($data as $k => $v){
echo '<tr>';
echo '<td>' . $v['id'] .'</td>';
echo '<td>' . $v['name'] .'</td>';
echo '<td>' . $v['age'] .'</td>';
echo '<td>' . $v['class'] .'</td>';
echo '</tr>';
}
echo '</table>';

四、 PDO的预处理(支持采用预处理方式)

  • 指定名字绑定变量
    $sql = "insert into student (name,age,class) values (:name,:age,:class)";
$pdostatement = $pdo->prepare($sql); $pdostatement->bindParam(":name" , $name);
$pdostatement->bindParam(":age" , $age);
$pdostatement->bindParam(":class" , $class);
$name = "hejun";
$age = 25;
$class = 15;
$pdostatement->execute(); $name = "daxi";
$age = 26;
$class = 16;
$pdostatement->execute();
  • ? 符号绑定变量
   $sql = "insert into student(name,age,class) values(?,?,?)";
$pdostatement = $pdo->prepare($sql); $pdostatement->bindParam(1 , $name);
$pdostatement->bindParam(2 , $age);
$pdostatement->bindParam(3 , $class); $name = "hejun";
$age = 25;
$class = 15;
$pdostatement->execute(); $name = "daxi";
$age = 26;
$class = 16;
$pdostatement->execute();
  • 省去绑定变量方法
    $sql = "insert into student(name,age,class) values(?,?,?)";
$pdostatement = $pdo->prepare($sql);
$pdostatement->execute(array("daxixi",20,11)); echo $pdo->lastInsertId(); //如果有主键,得到最后一条插入的主键值 echo '<br>' . $pdostatement->rowCount();//得到影响行数

数据库抽象层 pdo的更多相关文章

  1. 数据库抽象层PDO

    通过数据库抽象层PDO可以访问多个数据库 //数据库抽象层PDO //造DSN:驱动名:dbname=数据库名:host=服务器地址 $dsn = "mysql:dbname=mydb;ho ...

  2. PHP数据库抽象层--PDO(PHP Data Object) [一]

    1.简介:(PDO数据库访问抽象层,统一各种 数据库的访问接口 ) PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口.实现 PDO 接口的每个数据库驱动可以公开具体数据库 ...

  3. 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 2

    18.2  PDO所支持的数据库 使用PHP可以处理各种数据库系统,包括MySQL.PostgreSQL.Oracle.MsSQL等.但访问不同的数据库系统时,其所使用的PHP扩展函数也是不同的.例如 ...

  4. PHP 数据库抽象层pdo

    PDO是PHP数据对象(PHP Data Object)的缩写. pdo就是一个"数据库访问抽象层",作用是统一各种数据库的访问接口,能够轻松地在不同数据库之间进行切换,使得数据库 ...

  5. 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 5

    18.5  使用PDO对象 PDO扩展类库为PHP访问数据库定义了一个轻量级.一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据,大大简化了数据 ...

  6. 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 1

    现在,如果你已经能熟练地使用MySQL客户端软件来操作数据库中的数据,就可以开始学习如何使用PHP来显示和修改数据库中的数据了.PHP提供了标准的函数来操作数据库.在PHP 5以上的版本中可以使用My ...

  7. 【代码总结】数据库抽象层PDO

    一.概述 PDO就是一个"数据库访问抽象层",起作用是统一各种数据库的访问接口,能够轻松的在不同数据库之间进行切换. 二.PDO的安装 编辑php.ini文件 添加 extensi ...

  8. 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 12

    18.9  管理表books实例 在Web项目中,几乎所有模块都要和数据表打交道,而对表的管理无非就是增.删.改.查等操作,所以熟练掌握对表进行管理的这些常见操作是十分有必的.本例为了能更好地展示PD ...

  9. 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 9

    18.7  PDO的事务处理 事务是确保数据库一致的机制,是一个或一系列的查询,作为一个单元的一组有序的数据库操作.如果组中的所有SQL语句都操作成功,则认为事务成功,那么事务被提交,其修改将作用于所 ...

  10. 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 8-1

    18.6.5  获取数据 PDO的数据获取方法与其他数据库扩展非常类似,只要成功执行SELECT查询,都会有结果集对象生成.不管使用PDO对象中的query()方法,还是使用prepare()和exe ...

随机推荐

  1. 微信小程序只之全局存储

    全局变量 app.globalData 本地缓存 wx.setStorageSync(KEY,DATA) wx.getStorageSync(KEY) wx.getStorageInfoSync wx ...

  2. python开发函数进阶:内置函数

    一,内置函数 #内置的模块#拿过来直接就用的:内置的函数 #!/usr/bin/env python #_*_coding:utf-8_*_ #内置的模块 #拿过来直接就用的:内置的函数 #作用域相关 ...

  3. C++面试题(三)

    1 什么是函数对象?有什么作用? 函数对象却具有许多函数指针不具有的有点,函数对象使程序设计更加灵活,而且能够实现函数的内联(inline)调用,使整个程序实现性能加速. 函数对象:这里已经说明了这是 ...

  4. C#泛型参数多线程与复杂参数多线程

    背景:最近用多线程用的比较多自己走了一些弯路,分享出来希望大家少走弯路,C#中的多线程有两个重载,一个是不带参数的,一个是带参数的,但是即便是带参数的多线程也不支持泛型,这使得使用泛型参数多线程的时候 ...

  5. Flask之测试与部署

    5.1 蓝图Blueprint 为什么学习蓝图? 我们学习Flask框架,是从写单个文件,执行hello world开始的.我们在这单个文件中可以定义路由.视图函数.定义模型等等.但这显然存在一个问题 ...

  6. 浅谈 Python 的 with 语句 【转载】

    引言 with 语句是从 Python 2.5 开始引入的一种与异常处理相关的功能(2.5 版本中要通过 from __future__ import with_statement 导入后才可以使用) ...

  7. 使用Selenium登录新浪微博

    为了总结一下Selenium的用法,具体用了这个例子来说明一下. Selenium简单来说,就是通过程序驱动一个浏览器,并且可以通过程序来帮你做一些事情,例如点击.填表呀之类的. 换句话说,你在浏览器 ...

  8. delphi c++builder 判断工程类型 超级系统变量

    d:\program files (x86)\embarcadero\studio\16.0\SOURCE\RTL\SYS\SysInit.pas ModuleIsLib: Boolean;      ...

  9. Winform Datagridview 单元格html格式化支持富文本

    Winform Datagridview 单元格html格式化支持富文本 示例: 源码:https://github.com/OceanAirdrop/DataGridViewHTMLCell 参考: ...

  10. 如何搭建自己的SPRING INITIALIZR server

    这两天在慕课学Spring boot ,用idea通过spring initializr新建项目 即使用代理连不上.无奈. 参考了 GitHub - spring-io/initializr: A w ...