php数据库抽象层 PDO

  下面就来介绍一下数据库抽象层PDO的使用:

  PDO(PHP Data Objects)是一个轻量级的PHP扩展,提供了一个数据访问抽象层。还要就是PDO只能在PHP5.0以上版本使用。

  下面来介绍一下PDO常用的预定义常量:

  PDO::PARAM_BOOL (integer)    表示布尔数据类型

  PDO::PARAM_NULL (integer)    表示数据类型为NULL的SQL

  PDO::PARAM_INT (integer)      表示为integer数据类型的SQL

  PDO::PARAM_STR (integer)      表示为char varchar 或者其他字符串的数据类型的SQL

  PDO::PARAM_LOB (integer)      表示对象数据类型的SQL

  PDO::FETCH_LAZY (integer)    指定的获取方式,应当返回结果集的每一行作为一个对象的变量名,对应于它的字段名

  PDO::FETCH_ORI_NEXT (integer) 取结果集的下一行

  PDO::FETCH_ORI_PRIOR (integer取结果集的前面的行

  PDO::FETCH_ORI_FIRST (integer取结果集的第一行

  PDO::FETCH_ORI_LAST (integer) 取结果集的最后一行

  PDO::ATTR_PERSISTENT (integer)   创建一个持久连接,而不是新创建一个连接

  PDO的基本用法:

  使用PDO与数据库连接(这里只使用MySQL):

  

复制代码 代码如下:

  <?php

  $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);

  ?>

  下面的代码是对MySQL连接错误时的处理:

  

复制代码 代码如下:

  <?php

  try {

  $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);

  foreach($dbh->query('SELECT * from FOO') as $row) {

  print_r($row);

  }

  $dbh = null;

  } catch (PDOException $e) {

  print "Error!: " . $e->getMessage() . "<br/>";

  die();

  }

  ?>

  下面是两个重复使用插入语句的例子:

  

复制代码 代码如下:

  <?php

  $stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");

  $stmt->bindParam(':name', $name);

  $stmt->bindParam(':value', $value);

  // insert one row

  $name = 'one';

  $value = 1;

  $stmt->execute();

  // insert another row with different values

  $name = 'two';

  $value = 2;

  $stmt->execute();

  ?>

  

复制代码 代码如下:

  <?php

  $stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (?, ?)");

  $stmt->bindParam(1, $name);

  $stmt->bindParam(2, $value);

  // insert one row

  $name = 'one';

  $value = 1;

  $stmt->execute();

  // insert another row with different values

  $name = 'two';

  $value = 2;

  $stmt->execute();

  ?>

  对数据库进行查询操作:

  

复制代码 代码如下:

  <?php

  $stmt = $dbh->prepare("SELECT * FROM REGISTRY where name = ?");

  if ($stmt->execute(array($_GET['name']))) {

  while ($row = $stmt->fetch()) {

  print_r($row);

  }

  }

  ?>