PDO对象

一、单例(single)

       在全局下总能获得唯一的对象,而不是每次实例化都创建出来新的对象

       举例:

class single{

     private static $con=null;

     public static function getCon() {

             if(self::$con==null){

                   self::$con=mysql_connect("localhost","root","","librarydb");

       }

       return  self::$con;

    }

}

二、PDO(PHP Data Object)

       用来帮助用户管理操作数据库的工具

$pdo=new PDO('mysql:host=localhost;dbname=librarydb','root','');

$pdo对象在页面中为不可见内容,只能用创建成功或者失败来判断,无法直接获得内部属性和属性值

注意:在连接数据库的时候,并不是每一次的连接都可以保证成功,因此我们必须设置一个“保险”,这个东西就是try...catch

try{
         $pdo=new PDO("mysql:host=localhost;dbname=librarydb","root","");    //可能会出现异常的代码
}catch(Exception $e){
         echo '错误';
         echo $e->getmessage();

}

三、single获取PDO

class singlePdo{
	private static $pdo=null;
	public static function getPdo (){
		if(self::$pdo==null){
			try{
                self::$pdo=new PDO("mysql:host=localhost;dbname=librarydb","root","");
			}catch(Exception $e){
                echo "错误";
                echo $e->getmessage();
			} 
			
		}
		return self::$pdo;
	}
}

四、PDO实现增删改查

class singlePdo{
	private static $pdo=null;
	public  static function getPdo (){
		if (self::$pdo==null){
			try{
				self::$pdo=new PDO("mysql:host=localhost;dbname=librarydb","root","");
			}catch(Exception $e){
				echo "错误";
				echo $e->getmessage();
			}			
		}
		return self::$pdo;
	}
}






$pdo=singlePdo::getPdo();
$pdo->exec('set names utf8');
$pdo->exec('set character_set_client=utf8');
$pdo->exec('set character_set_results=utf8');

// $sql="insert into book values ('4','haha','haha','50','50')";     //添加
// $sql="delete from book where bookName='haha' ";     //删除
$sql="update book set bookId='7' where bookName='5' ";   //修改
$result=$pdo->exec($sql);

if($result){
		echo '修改成功';
	}else{
		echo $pdo->errorCode();
		echo $pdo->errorInfo();
	}	

也可以把单例封装成一个php文件直接引入

require_once '文件地址';

五、PDO异常处理(Exception)

扫描二维码关注公众号,回复: 1596938 查看本文章

     1、默认模式:主要依赖于系统提供的errorCode和errorInto属性实现

     2、警报模式:为PDO 设置setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARING);

     3、中断模式:为PDO设置setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXEPTION);

     举例:

try{

     $pdo=new PDO("mysql:host=localhost;dbname=librarydb","root","");

}catch(Exception $e){

      echo $e->getmessage();

}

$sql="insert into book values("实参1","2","3","4","5")";

$result=$pdo->exec($sql);

if($result){

      echo 'ok';

}else{

       echo $pdo->errorCode();

       echo $pdo->errorInfo();

}

六、PDO预处理 

      在sql语句执行之前,对sql语句执行简短操作

       1、perpare()和execute()

             perpare()方法:表示预先处理,用来处理半成品sql语句

             execute()方法:提供给预处理结果使用,用来执行并获得最终结果

             注意:perpare方法只能处理半成品语句,如果是成品,需要用exec调用

                       execute方法只能用半成品调用,目的是为了给半成品传参

             语法:

$sql="insert into book values(?,?,?,?,?)";

$pdoso=$pdo->perpare($sql);

$pdoso->execute(array("1","2","3","4","5"));

              2、bindColumn()方法

                   将execute方法执行的结果中的某一列数据,绑定到一个变量之上

                   语法:

$pdoso=$pdo->execute();

$pdoso->bindColumn(index,$变量名);

              3、bindValue()方法

                    为了给半成品传递参数

                    语法:

$pdoso->bindValue(index,value);

七、PDO事务处理  transaction

       因为并不能保证每次都成功,所以整个事物操作必须放在try...catch中

       catch触发就意味着必须将之前的所有操作还原  回滚操作:$pdo->rollBack();

       操作必须在事务开启之后执行,在事务提交之前停止

                开启事务:$pdo->beginTransaction();

                关闭事务:$pdo->commit();

         中文处理方案(避免乱码):

                 读取:$pdo->query("set names utf8");

                 插入:$pdo->exec("set names utf8");

猜你喜欢

转载自blog.csdn.net/qq_42129143/article/details/80244742
PDO