pdo笔记

连接pdo

$DSN = "mysql:host=服务器地址/名称;port=端口号;dbname=数据库名";
$Opt = array(PDO::MYSQL_ATTR_INIT_COMMAND=>'set names 连接编码');
$pdo = new pdo($DSN, "用户名", "密码", $Opt);

$DSN = "mysql:host=localhost;port=3306;dbname=test";
$Opt = array(PDO::MYSQL_ATTR_INIT_COMMAND=>'set names utf8');
$pdo = new pdo($DSN, "root", "", $Opt);
使用pdo

$result = $pdo->query(“返回结果集的sql语句”); 
结果:
成功:就是一个pdo结果集对象;
失败:false$result = $pdo->exec(“增删改的sql语句”);
结果: true(表示成功),false(表示失败);
pdo事务

$pdo->lastInsertId(); //获取最后添加的id值;
$pdo->beginTransaction(); //开启一个事务
$pdo->commit(); //提交一个事务
$pdo->rollBack(); //回滚一个事务;
$pdo->inTransaction(); //判断当前行是否在事务中,返回true/false
$pdo->setAttribute(属性名,属性值); //设置pdo对象的属性值;
pdo错误处理

如果返回false使用$pdo->errorInfo()得到错误信息

$sql="updateasdsa user set name ='abc';";
$result  =  $pdo->exec ($sql);
if( $result  ===  false){
    $error=$pdo->errorInfo();
    echo $error[2];
}else{
    echo '成功';
}
结果集

$stmt = $pdo->query("select......"); //这是获得结果集
$stmt->rowCount(); //得到结果集的行数
$stmt->columnCount(); //得到结果 集的列数
$stmt->fetch(返回类型); //从结果集中取出“一行”数据,取出的结果,由其中的返回类型来决定,常用的有:
    PDO::FETCH_ASSOC:表示关联数组
    PDO::FETCH_NUM:表示索引数组
    PDO::FETCH_BOTH:表示前二者皆有,这是默认值
    PDO::FETCH_OBJ:表示对象
$stmt->fetchAll(返回类型); //一次性获取结果集中的所有数据,返回的是一个二维数组,返回类型与fetch相同
$stmt->fetchColumn(列数);获取结果集中的“下一行”数据的第$i个字段的值,返回字符串,列数从零开始
$stmt->errorCode(); //pdo结果集的错误代号
$stmt->errorInfo(); //pdo结果集的错误信息(是一个数组)
$stmt->closeCursor(); //关闭结果集(相当于mysql_close())
pdo预处理

语法:

$sql = "select * from tab where id = ? "; //这里这个"?"就是未给定的数据项;这里通常叫做“占位符”,也可以是多个问好。
$sql = "select * from tab where id = :v1 and name = :v2"; //这里这个“:v1”和 “:v2”就是未给定的数据项,通常这里叫做“命名参数”;
使用:

//分3步:
//1,对含预处理语法的sql语句进行“预处理”:
$stmt = $pdo->prepare( $sql );
//2, 对上述预处理的结果对象($stmt)的未赋值数据,进行赋值:
$stmt->bindValue( 数据项1, 值1);
$stmt->bindValue( 数据项2, 值2);
//3, 执行执行:
$stmt->execute();

//这样之后,该sql语句就算正式完成!
实际使用

//第一种形式
$sql="select * from user where id = ? and name = ?";
$stmt=$pdo->prepare($sql);
/*
$stmt->bindValue(1,2);
$stmt->bindValue(2,'pmd');
$stmt->execute();
*/
$stmt->execute([1,'zhl']);
var_dump($stmt->fetch());
//第二种形式
$sql="select * from user where id = :id and name = :name";
$stmt=$pdo->prepare($sql);
/*
$stmt->bindValue(':id',1);
$stmt->bindValue(':name','zhl');
$stmt->execute();
*/
$stmt->execute([':id'=>2,':name'=>'pmd']);
var_dump($stmt->fetch());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值