数据库连接
1, 连接数据库
2, 判断错误
3, 设置字符集【PDO当中木有设置字符集的这一个选项和设置】
4, 选择数据库
5, 准备SQL语句 [有结果集的,无结果集的]
有结果集的用query()
无结果集的用exec()
6, 发送SQL语句
7, 获取结果集或者是判断是否成功
8, 关闭数据库连接
连接数据库的时候,第一步是传入DSN
Data source name 数据源名
设置数据驱动选项有两种方式
第一种在new Pdo的时候传入第4个参数,以数组键值对的形式来去传。
第二种$pdo->setAttribute(属性名,属性值);
错误处理模式:
PDO::ATTR_ERRMODE: 错误处理模式
PDO::ERRMODE_SILENT: 使用$pdo对象->errorCode() 和$pdo->errorInfo()来获取错误号和错误信息
PDO::ERRMODE_WARNING自动为PHP内部的警告模式
PDO的占位符有两种,第一种是? 第二种是 : 字符串
绑定参数的第一种形式:$stmt->bindParam(1,$username,PDO::PARAM_STR);
第一种方式:
$stmt->bindColumn(1,$id);
$stmt->bindColumn(2,$username);
$stmt->bindColumn(3,$password);
while($stmt->fetch()){
echo $id.'=========='.$username.'--------'.$password.'<br>';
}
第二种方式:
while($row=$stmt->fetch()){
echo $row[0].'----------'.$row[1].'<br />';
}
第三种情况:
while($row=$stmt->fetch(PDO::FETCH_ASSOC)){
var_dump($row);
echo $row['id'].'----------'.$row['username'].'<br />';
}
第四种情况:
$a=$stmt->fetchAll();
foreach($a as $value){
echo $value['username'].'<br>';
}
PDO.php
<?php
//PDO有错不用throw 自动扔给catch
try{
$dsn='mysql:host=localhost;dbname=php_o';
$pdo=new Pdo($dsn,'root','php_aha');
$pdo->query('set names utf8');
$sql="insert into php_user(username,password,createtime) values('责','的每份','123')";
$a=$pdo->exec($sql);
}catch(PDOException $e){
echo 'PDO连接错误';
echo $e->getMessage();
}
?>
no.1.php
<?php
try{
$dsn='mysql:host=localhost;dbname=php_mo';
$pdo=new Pdo($dsn,'root','liwenkaihaha');
$pdo->query('set names utf8');
$stmt=$pdo->prepare('select id,username,password from 3user where id>:id');
$stmt->bindParam(':id',$id);
$id=1;
$stmt->execute();
//重点,fetch fetchAll的遍历
//
//
//execute 执行及bindParam bindValue
$stmt->setFetchMode(PDO::FETCH_ASSOC);
while($row=$stmt->fetch()){
echo $row['username'].'<br>';
}
$a=$stmt->fetchAll();
foreach($a as $value){
echo $value['username'].'<br>';
}
while($row=$stmt->fetch(PDO::FETCH_ASSOC)){
var_dump($row);
echo $row['id'].'----------'.$row['username'].'<br />';
}
while($row=$stmt->fetch()){
echo $row[0].'----------'.$row[1].'<br />';
}
$stmt->bindColumn(1,$id);
$stmt->bindColumn(2,$username);
$stmt->bindColumn(3,$password);
while($stmt->fetch()){
echo $id.'=========='.$username.'--------'.$password.'<br>';
}
$stmt=$pdo->prepare('delete from 37demo_user where id>?');
$stmt->bindParam(1,$id);
$id=25;
$vo=$stmt->execute();
if($vo){
echo '执行成功';
}else{
echo '执行失败';
}
echo $stmt->rowCount();
$stmt=$pdo->prepare('update 3er set username=:user,password=:pass where id=:id');
$stmt->execute(array(':user'=>'liwenkai',':pass'=>'aaa',':id'=>31));
$stmt->execute(array(1=>'abc',2=>'cbd',3=>30));
$username='柔';
$password='长';
$time=123456;
$stmt=$pdo->prepare('insert into 37ser(username,password,createtime) values(?,?,?)');
$stmt->bindValue(1,$username,PDO::PARAM_STR);
$stmt->bindValue(2,$password,PDO::PARAM_STR);
$stmt->bindValue(3,$time,PDO::PARAM_INT);
$stmt->execute();
$stmt=$pdo->prepare('insert into 3_user(username,password,createtime) values(:username,:pass,:ct)');
$stmt->execute(array(':username'=>'lixiaopi',':pass'=>'有',':ct'=>123456));
$stmt=$pdo->prepare('insert into p_ser(username,password,createtime) values(:username,:pass,:ct)');
$stmt->bindParam(':username',$username);
$stmt->bindParam(':pass',$password);
$stmt->bindParam(':ct',$time);
$username='尽心尽力';
$password='师';
$time='123213';
$stmt->execute();
$stmt=$pdo->prepare('insert into o_user(username,password,createtime) values(:username,:pass,:ct)');
$stmt->bindParam(':username',$username,PDO::PARAM_STR);
$stmt->bindParam(':pass',$password,PDO::PARAM_STR);
$stmt->bindParam(':ct',$time,PDO::PARAM_INT);
$username='开心';
$password='其的';
$time=1;
$stmt->execute();
$stmt->bindParam(1,$username,PDO::PARAM_STR);
$stmt->bindParam(2,$password,PDO::PARAM_STR);
$stmt->bindParam(3,$time,PDO::PARAM_INT);
$username='心';
$password='气';
$time=123456;
$vo=$stmt->execute();
var_dump($vo);
}catch(PDOException $e){
echo 'PDO遇到错误:';
echo $e->getMessage();
}
?>
abc.php
<?php
try{
$dsn='mysql:host=localhost;dbname=php_mo';
$pdo=new Pdo($dsn,'root','php_ha');
$pdo->query('set names utf8');
$sql="select * from php_r";
$result=$pdo->query($sql);
foreach($result as $value){
echo $value['id'].'---------'.$value['username'].'------'.$value['password'].'<br>';
}
$sql="update php_r set username='快',password='行' where id>20";
$vo=$pdo->exec($sql);
var_dump($vo);
$sql="delete from php_user where id<20";
$vo=$pdo->exec($sql);
var_dump($vo);
$sql="insert into php_ser(username,password,createtime) values('当态','们',123456)";
$vo=$pdo->exec($sql);
if($vo){
echo '注册成功';
}else{
echo '注册失败';
}
}catch(PDOException $e){
echo '发生错误' . $e->getMessages();
}
?>
file.php
<?php
try{
$dsn='mysql:host=localhost;dbname=phpemo';
$pdo=new Pdo($dsn,'root','php_haha');
$pdo->query('set names utf8');
/*
$stmt=$pdo->prepare('insert into file(file) values(:file)');
$stmt->bindParam(':file',$file,PDO::PARAM_LOB);
$file=fopen('nm.jpg','r');
$stmt->execute();
*/
$stmt=$pdo->prepare('select file from file');
$stmt->execute();
$row=$stmt->fetch();
header('content-type:image/jpeg');
echo $row[0];
}catch(PDOException $e){
}
?>
pdo事务
transla.php
<?php
try{
$pdo=new Pdo('mysql:host=localhost;dbname=php_mo','root','php_ha');
$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,0);
$pdo->beginTransaction();
$flag=true;
$sql="update ye set je=je-20000000 where id=2";
$result=$pdo->exec($sql);
if(!$result){
$flag=false;
}
$sql="update ye set je=je+20000000 where id=1";
$result=$pdo->exec($sql);
if($result&&$flag){
echo '转帐成功';
$pdo->commit();
}else{
echo '转帐失败';
$pdo->rollback();
}
$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,1);
}catch(PDOException $e){
echo '遇到错误'.$e->getMessage();
}
?>