PDO知识点合集

PDO是别人写的“数据库操作工具类”!

一、PDO连接Mysql数据库

$DSN = "mysql:host=服务器地址/名称;port=端口号;dbname=数据库名";

$Opt = array(PDO::MYSQL_ATTR_INIT_COMMAND=>’set names 连接编码’);

$pdo = new pdo($DSN, "用户名", "密码", $Opt);

$dns = "mysql:host=localhost;port=3306;dbname=test";
$opt = array(PDO::MYSQL_ATTR_INIT_COMMAND => "set names utf8");
$pdo = new PDO($dns, "root", "root", $opt);

二、PDO对象常用方法

  $pdo->query(“返回结果集的sql语句”);返回:结果集或false

  $pdo->exec(“增删改的sql语句”); 返回:true或false

其他操作:

$pdo->lastInsertId();   获取最后添加的id值;

$pdo->beginTransaction();  开启一个事务

$pdo->commit()  提交一个事务

$pdo->rollBack();  回滚一个事务;

$pdo->inTransaction();  判断当前行是否在事务中,返回true/false

$pdo->setAttribute(属性名,属性值);  设置pdo对象的属性值;  举例:$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)

三、PDO错误处理

默认情况下,pdo采用“静默模式”处理错误:就是发生了错误后,并不提示,而只是返回false。我们需要在程序中去判断返回是否为fale,然后,如果是false,再去“主动”获取错误信息。

设置PDO为异常模式:$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);通过try   catch进行异常捕获处理

//设置为异常模式
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try{
    $sql = "deleteee from test where id = 1";
    $pdo->exec($sql);
} catch (Exception $e) {
    echo $e->getCode();
    echo $e->getMessage();
}

四、PDO结果集(PDOStatement)

$stmt = $pdo->query(“select ...... ”);  //这是获得结果集

$stmt->rowCount() ;   //得到结果集的行数

$stmt->columnCount() ;   //得到结果集的列数

$stmt->fetch( [返回类型] );   //从结果集中取出“一行”数据;

取出的结果,由其中的“返回类型”来决定,常用的有:

PDO::FETCH_ASSOC:表示关联数组
PDO::FETCH_NUM:表示索引数组
PDO::FETCH_BOTH:表示前二者皆有,这是默认值
PDO::FETCH_OBJ:表示对象

$stmt->fetchAll([返回类型]);  一次性获取结果集中的所有数据,返回的是一个二维数组,相当于我们自己写的GetRows()

$stmt->fetchColumn( [$i] );  获取结果集中的“下一行”数据的第$i个字段的值,结果是一个“标量数据”,相当于我们自己的写的:GetOneData()

$stmt->fetchObject();

$stmt->errorCode();:  pdo结果集的错误代号

$stmt->errorInfo();    pdo结果集的错误信息(是一个数组)

$stmt->closeCursor();   关闭结果集(相当于mysql_close()  )

五、PDO预处理

语法1:

$sql = “select  *  from  tab   where  id = ? “; //这里这个“?”就是未给定的数据项;这里通常叫做“占位符”    //也可以是多个问好。

语法2:

$sql = “select  *  from  tab   where  id = :v1  and  name  =  :v2 “; //这里这个“:v1”和 “:v2” 就是未给定的数据项;通常这里叫做“命名参数”;

1,对含预处理语法的sql语句进行“预处理”:

$stmt = $pdo->prepare( $sql ); 

2, 对上述预处理的结果对象($stmt)的未赋值数据,进行赋值:

$stmt->bindValue( 数据项1, 值1);

$stmt->bindValue( 数据项2, 值2);

3, 执行执行:

$stmt->execute();

$stmt = $pdo->prepare("insert into test (name, age) values (?, ?)");
$stmt->bindValue(1, "yy");
$stmt->bindValue(2, 19);
$stmt->execute();
$stmt = $pdo->prepare("select * from test where id = :v1");
$stmt->bindValue(":v1", 1);
$stmt->execute();
$arr = $stmt->fetch(PDO::FETCH_ASSOC);
var_dump($arr);

 

 

posted @ 2019-07-26 10:01  样子2018  阅读(212)  评论(0)    收藏  举报