话说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();//总记录数 ?>