392   MySQL PHP

一,关于PDO
1,PDO是指一种PHP数据对象,PHP为了统一所有数据库抽象层对象接口,新推出的API
2,它可以借助pdo_mysql驱动链接mysql数据库,它还可以借助Oracle数据库的PDO驱动来链接Oracle。换句话说,通过PDO可以链接多种类型的数据库。
3,PDO的prepare模式,可以从根本上防止SQL注入,因为它把SQL模板和变量分开两次传送到MySQL数据库。

 

 

二,PDO的示例代码:


// PDO链接信息
$g_pdo_connection = 'mysql:dbname=test;host=127.0.0.1;charset=utf8';
$g_pdo_user = 'user';
$g_pdo_passwd = 'password';

try{
	// 创建POD链接
	$pdo = new PDO($g_pdo_connection, $g_pdo_user, $g_pdo_passwd);
	// 不需要本地进行字符转换,避免出错
	$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
	// 以对象的形式返回数据
	$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); 
	// 抛出错误
	$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch (PDOException $e){
	// 记录错误信息
	my_error_log('PDOException:' . $e->getMessage());
}

// 组装SQL
$insert = 'INSERT INTO user (name,password,create_at) VALUES (:name,:password,now())';
$data = array(':name'=>'user',':password'=>'passwd');
try{
	// 事物开始
	$pdo->beginTransaction();
	// 准备事物
	$stmt = $pdo->prepare($insert);
	// 代入数据,并执行事物
	$rtn = $stmt->execute($data);
	// 提交执行结果
	$pdo->commit();
}catch (PDOException $e){
        // 回退
	$pdo->rollBack(); 
	my_error_log('PDOException:' . $e->getMessage());
}




Leave a Reply

Your email address will not be published. Required fields are marked *