pdo 数据库操作

话说pdo技术将在php6全面使用,看来这个技术一定有它的非同凡响之处,看了看果真如此,学习了一下,并记录了笔记,不过乱的不堪一击~\(≧▽≦)/~啦啦啦

<?php
//使用pdo之前一定要配置好扩展和php.ini

 try{
  //$pdo=new PDO("mysql:host=localhost;dbname=pd","root","",array(PDO::ATTR_AUTOCOMMIT=>0));//tem   连接数据库方法dsn,以及处理出错显示方法  当改变数据库只需要改变这个连接就可以了 array()参数也可以用下面这条语句实现
  
     //设置错误报告模式
    //$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);//可以用$pdo->errorInfo()输出错误信息但捕获异常不适用
	$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
 }catch(PDOException $e)
 {
	 echo '连接失败'.$e->getMessage();//获取异常信息
	 exit(); 
 }
  
  //sql exec-->update,delete,insert,other;  query-->有结果集的,select; prepare
//  echo $pdo->exec("insert into test(title,content) values('wangwu','thank you!')") ;//返回影响的行数 1
 
  //设置错误报告模式
  //echo $pdo->errorCode().'<br>';
  //print_r($pdo->errorInfo());//A
  //设置常量
  
  //echo $pdo->lastInsertId();
  
  //$arr=$pdo->query("select * from test");//暂定处理结果集
  
  /*
  事务处理:
  以下任何一个环节出错,执行语句所有的都不执行
  
  张三从李四那买了一台2000元电脑
  
  从张三扣除2000
  向李四加入2000
  从商品中减少一台电脑
  
  MyIsAM InnoDB 两者区别 :后者类型才有事务处理功能,如果不需要事务处理还是用MyIsAM合适
  */
// try{ 
//  $pdo->beginTransaction();
//  $price=50;
//  $affect_rows=$pdo->exec("update zhanghao set price=price-{$price} where id='1'") or die($pdo->errorInfo());
//  if(!$affect_rows)
//     throw new PDOException("张三转出失败");
//   $affect_rows=$pdo->exec("update zhanghao set price=price+{$price} where id='2'"); 
//   if(!$affect_rows)
//     throw new PDOException("向李四转入失败");
//	 echo "交易成功";
//	 $pdo->commit();
// }catch(PDOException $e){
//	 echo $e->getMessage();
//	 $pdo->rollBack();
//	 }
// //$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,1);//




//预处理 处理结果集、
/*
preparment类相比exec,query效率更高,即使是单个语句;安全;    推荐使用
*/


/*pdo中两种占位符号
   ? 参数    ----索引数组,按索引顺序使用
   名字参数   -----关联数组,按名称使用,和顺序无关
*/
  $pdo=new PDO("mysql:host=localhost;dbname=pd","root","");
  //$stmt=$pdo->prepare("insert into test(title,content) values(?,?)");//所有sql都可以执行  一个返回对象
  
  //准备好了一条语句并入到服务器端,也已经编译过来了,就差为他分配数据过来
 // $stmt=$pdo->prepare("insert into test(title,content) values(:title,:content)");//update 其他也是一样
// // //绑定参数
//  $stmt->bindParam(":content",$content);//引用类型传值
//  $stmt->bindParam(":title",$title);
//  $title='God';
//  $content='I am fine!';
//  
//  //?形式
////  $stmt->bindParam(1,$title);//引用类型传值
////  $stmt->bindParam(2,$content);
////  $title='ljf';
////  $content='welcome!';
//
//
//  if($stmt->execute())
//   { echo "执行成功";echo $pdo->lastInsertId();}
//  else
//    echo "执行失败";
//  
 // $stmt->execute(array(":title"=>"oh",":content"=>"you are sexy"));
  //如果是表单直接$stmt->execute($_POST);
 // $stmt->execute(array("look","it's a beauty"));
 
// 获取结果
  $stmt=$pdo->prepare("select id,title,content from test where id>:id order by id desc");
  $stmt->execute(array(":id"=>2));//stmp是结果集的对象
  
 //// $stmt->setFetchMode(PDO::FETCH_ASSOC);//设置返回数组形式
//  while($row=$stmt->fetch(PDO::FETCH_ASSOC))//返回一条查询结果返回数组的形式:PDO::FETCH_NUM 索引形式,FETCH_ASSOC 关联数组形式....both默认---可以设置后就不用写了
//  print_r($row).'<br>';

$data=$stmt->fetchAll(PDO::FETCH_ASSOC);
echo '<pre>';
print_r($data);
echo '</pre>';


//总记录数,列的信息,很多很多....
echo $stmt->rowCount();//总记录数
?>

你可能感兴趣的:(mysql,exception,数据库,delete,query,insert)