php学习笔记(二十二)PDO的安装和初步使用

来源:互联网 发布:java开发简历自我评价 编辑:程序博客网 时间:2024/05/30 23:37
<?php /** * php data object * 数据库访问抽象层 * 基于驱动的 *  * 1.安装pdo * linux:--with-pdo-mysql=/user/mysql * window:1.安装pdo的扩展:php_pdo.dll;2.安装所需数据库的驱动,例如:php_pdo_mysql.dll和php_pdo_sqlite.dll *  * 2.phpinfo.php检查是否存在PDO函数库 *  * 3.使用pdo * PDO类:与数据库连接有关的类 * PDOStatement:准备语句,处理结果集(预处理) * PDOException: * 很多常量 *  * 4.创建PDO对象 *  * 5.执行sql * 执行sql语句:exec、query、prepare * query:执行有结果集的,即select语句 * exec:用来执行有影响行数的,即:insert、update、delete * prepare:预处理 *  * 6.事务处理 *///找到数据库驱动;可以将dsn放入本地或者远程文件当中(dsn.ini);//也可以写在php配置文件当中:pdo.dsn.mysqldsn = mysql:host=localhost;dbname=hibernate//$oracleDsn = "oci:dbname=//localhost:3306/databasename";$dsn = "mysql:host=localhost;dbname=hibernate";$username = "root";$passwd = "root";//调优用的数组//getAttribute获取调优的属性的这只自动提交为假//也可以创建之后再设置:$pdo->setAttribute($attribute, $value);$options = array(PDO::ATTR_AUTOCOMMIT=>1);try {$pdo = new PDO($dsn, $username, $passwd, $options);//$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 0);//设置错误报告模式//PDO::ERRMODE_EXCEPTION即使是警告也会显示是异常$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);}catch (PDOException $e){echo "数据库连接失败".$e->getMessage();exit;}////echo $pdo->getAttribute(PDO::ATTR_AUTOCOMMIT)."<br>";//echo $pdo->getAttribute(PDO::ATTR_CLIENT_VERSION)."<br>";//echo $pdo->getAttribute(PDO::ATTR_SERVER_INFO)."<br>";//echo $pdo->getAttribute(PDO::ATTR_SERVER_VERSION)."<br>";//echo $pdo->getAttribute(PDO::ATTR_DRIVER_NAME)."<br>";/** * 更新操作 * Enter description here ... * @var unknown_type */$update = "update users set name = 'budi' where id > 12";//更新操作try{//返回影响的行数$num = $pdo->exec($update);echo "最后插入的自动增长的id".$pdo->lastInsertId();}catch (PDOException $e){echo $e->getMessage();}if ($num){echo "执行成功";echo $num ."<br>";}else{echo $pdo->errorCode()."<br>";echo $pdo->errorInfo();}/** * 查询操作 * Enter description here ... * @var unknown_type */$select = "select * from users where id < 12";//查询操作try{//返回影响的行数$stmt = $pdo->query($select);foreach ($stmt as $row){print_r($row)."<br>";}}catch (PDOException $e){echo $e->getMessage();}/** * 事务处理机制 * 1.关闭自动提交 * 2.开启事务 * 3.执行语句 * 4.提交更新 */try {//关闭自动提交$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 0);//开启事务$pdo->beginTransaction();$price = 500.00;$sql = "update users set price=price+{$price} where id = 2";$pdo->exec($sql);$sql = "update users set price=price+{$price} where id = 3";$pdo->exec($sql);//提交更新$pdo->commit();}catch (PDOException $e){echo $e->getMessage();//回滚事务$pdo->rollBack();}?>

原创粉丝点击