一,关于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