PDO写操作
PDO类提供的exec()方法,用来执行操作类SQL,包括INSERT、UPDATE和DELETE。创建pdo.php文件,在该文件中封装PDO操作方法,实现实例化PDO对象和执行写操作的方法。具体代码如下所示。
1 <?php
2 function pdo_init(){
3 $dsn = 'mysql:host=localhost;port=3306;dbname=mydb;charset=utf8';
4 $pdo = new PDO($dsn, 'root', '123456');
5 if(!$pdo){
6 exit('数据库连接失败!');
7 }
8 return $pdo;
9 }
上述代码中,定义了pdo_init()方法,该方法用于实例化PDO类,第5~7行代码当连接数据库失败后,直接终止脚本运行,并输出“数据库连接失败!”的提示信息,连接数据库成功时,则返回实例化的对象信息。
接下来封装pdo_exec()方法,该方法执行外部传入的SQL语句,返回执行的最终结果。具体代码如下所示。
1 function pdo_exec($pdo,$sql){
2 $res = $pdo->exec($sql);
3 if(false === $res){
4 echo 'SQL错误:<br/>';
5 echo '错误代码:' . $pdo->errorCode() . '<br/>';
6 echo '错误原因:' . $pdo->errorInfo()[2];
7 exit;
8 }
9 return $res;
10 }
在上述代码中,通过调用PDO类的exec()方法来执行操作类SQL,该方法执行成功后返回受影响的行数。其中,第3~8行对执行结果进行判断,如果执行失败,则调用errorCode()和errorInfo()方法来输出错误信息。需要注意的是,第3行代码使用“===”恒等于运算符来判断执行结果,当没有可更新或删除的数据时,返回受影响的行数为0,因此需要使用恒等于运算符对结果集进行判断。
封装完PDO操作类后,创建mypdo.php,调用封装好的PDO方法。具体代码如下所示。
1 <?php
2 include 'pdo.php';
3 $pdo = pdo_init();
4 // 执行插入数据SQL
5 $inserSql = 'INSERT INTO student VALUES(NULL,'Jery',2)';
6 $res = pdo_exec($pdo, $inserSql); // var_dump($res)输出结果:int(1)
7 // 获取自增ID
8 echo '插入数据成功,自增ID为:' $pdo->lastInsertId(); // 5
9 // 执行更新数据SQL
10 $updateSql = 'UPDATE student SET mid=1 WHERE id=4';
11 $res = pdo_exec($pdo, $updateSql); // var_dump($res)输出结果:int(1)
12 // 执行删除数据SQL
13 $deleteSql = 'DELETE FROM student WHERE id=4';
14 $res = pdo_exec($pdo, $deleteSql); // var_dump($res)输出结果:int(1)
在上述代码中,分别调用pdo_exec()来执行插入、更新和删除等操作,通过打印执行结果可以看出,返回结果都是int(1),表示该操作产生的受影响行数。当插入数据后,需要获取新增记录的自增ID时,可以通过调用PDO提供的lastInsertId()方法来获取。