jtahstu的博客

root@jtahstu.com   Github   英文博客  

最新碎语:以后没事写写小的知识点吧

您的位置:jtahstu的博客 >笔记> PHP PDO数据库操作

PHP PDO数据库操作

PHP PDO常用操作

<?php 
	$dbms='mysql';     //数据库类型 Oracle 用ODI,对于开发者来说,使用不同的数据库,只要改这个,不用记住那么多的函数了
	$host='localhost'; //数据库主机名
	$dbName='test';    //使用的数据库
	$user='jtahstu';      //数据库连接用户名
	$pass='jtahstu';          //对应的密码
	$dsn="$dbms:host=$host;dbname=$dbName";
	try {
		$dbh=new PDO($dsn, $user, $pass);
		//默认这个不是长连接,如果需要数据库长连接,需要最后加一个参数:array(PDO::ATTR_PERSISTENT => true) 变成这样:
		//$db = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));
		echo "数据库连接成功!<br>";
		$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 			foreach ($dbh->query('SELECT * from information') as $row) {
// 				echo $row[0]."<br>";
// 				echo $row[1]."<br>";
// 				echo $row[2]."<br>";
// 				echo $row[3]."<br>";
// 				echo $row[4]."<br>";
// 			}
		
		$a=$dbh->exec("insert into information values('6','PDO教程','jtahstu','电子','2015-11-24')");
		if($a)	echo "插入成功!";
		else echo "插入失败";
// 		$dbh = null;//关闭连接
	} catch (PDOException $e) {
		die ("Error!: " . $e->getMessage() . "<br/>");
	}
?>

PDO 事务与自动提交

<?php
try {
  $dbh = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2', 
      array(PDO::ATTR_PERSISTENT => true));
  echo "Connected\n";
} catch (Exception $e) {
  die("Unable to connect: " . $e->getMessage());
}

try {  
  $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  $dbh->beginTransaction();//启动一个事务
  $dbh->exec("insert into staff (id, first, last) values (23, 'Joe', 'Bloggs')");
  $dbh->exec("insert into salarychange (id, amount, changedate) 
      values (23, 50000, NOW())");
  $dbh->commit();//提交
  
} catch (Exception $e) {
  $dbh->rollBack();//回滚
  echo "Failed: " . $e->getMessage();
}
?>

用预处理语句进行重复插入

下面例子通过用 name 和 value 替代相应的命名占位符来执行一个插入查询

<?php
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);

// 插入一行
$name = 'one';
$value = 1;
$stmt->execute();

//  用不同的值插入另一行
$name = 'two';
$value = 2;
$stmt->execute();
?>

下面例子通过用 name 和 value 取代 ? 占位符的位置来执行一条插入查询。

<?php
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (?, ?)");
$stmt->bindParam(1, $name);
$stmt->bindParam(2, $value);

// 插入一行
$name = 'one';
$value = 1;
$stmt->execute();

// 用不同的值插入另一行
$name = 'two';
$value = 2;
$stmt->execute();
?>

 PDO 类:

    PDO::beginTransaction — 启动一个事务

    PDO::commit — 提交一个事务

    PDO::__construct — 创建一个表示数据库连接的 PDO 实例

    PDO::errorCode — 获取跟数据库句柄上一次操作相关的 SQLSTATE

    PDO::errorInfo — 返回最后一次操作数据库的错误信息

    PDO::exec — 执行一条 SQL 语句,并返回受影响的行数

    PDO::getAttribute — 取回一个数据库连接的属性

    PDO::getAvailableDrivers — 返回一个可用驱动的数组

    PDO::inTransaction — 检查是否在一个事务内

    PDO::lastInsertId — 返回最后插入行的ID或序列值

    PDO::prepare — 备要执行的SQL语句并返回一个 PDOStatement 对象

    PDO::query — 执行 SQL 语句,返回PDOStatement对象,可以理解为结果集

    PDO::quote — 为SQL语句中的字符串添加引号。

    PDO::rollBack — 回滚一个事务

    PDO::setAttribute — 设置属性

PDOStatement 类:

    PDOStatement::bindColumn — 绑定一列到一个 PHP 变量

    PDOStatement::bindParam — 绑定一个参数到指定的变量名

    PDOStatement::bindValue — 把一个值绑定到一个参数

    PDOStatement::closeCursor — 关闭游标,使语句能再次被执行。

    PDOStatement::columnCount — 返回结果集中的列数

    PDOStatement::debugDumpParams — 打印一条 SQL 预处理命令

    PDOStatement::errorCode — 获取跟上一次语句句柄操作相关的 SQLSTATE

    PDOStatement::errorInfo — 获取跟上一次语句句柄操作相关的扩展错误信息

    PDOStatement::execute — 执行一条预处理语句

    PDOStatement::fetch — 从结果集中获取下一行

    PDOStatement::fetchAll — 返回一个包含结果集中所有行的数组

    PDOStatement::fetchColumn — 从结果集中的下一行返回单独的一列。

    PDOStatement::fetchObject — 获取下一行并作为一个对象返回。

    PDOStatement::getAttribute — 检索一个语句属性

    PDOStatement::getColumnMeta — 返回结果集中一列的元数据

    PDOStatement::nextRowset — 在一个多行集语句句柄中推进到下一个行集

    PDOStatement::rowCount — 返回受上一个 SQL 语句影响的行数

    PDOStatement::setAttribute — 设置一个语句属性

    PDOStatement::setFetchMode — 为语句设置默认的获取模式。

赶紧舍弃mysql和mysqli函数吧

---

本文章采用 知识共享署名2.5中国大陆许可协议 进行许可,欢迎转载,演绎或用于商业目的。

---

二维码加载中...

扫一扫移动端访问O(∩_∩)O

发表评论

72 + 22 =
路人甲 表情
看不清楚?点图切换 Ctrl+Enter快速提交
正在加载中……