php基础-PDO基础
1.1 实例化PDO对象
<?php $dsn = "mysql:host=127.0.0.1;dbname=test;port=3306;charset=utf8"; $user = 'root'; $passwd = 'root'; $pdo = new PDO($dsn,$user,$passwd); //实例化pdo对象 echo '<pre>'; /* var_dump返回结果如下: object(PDO)#1 (0) { } */
1.2PDO的exec方法,执行增删改操作。
$sql2 = "insert into user values('admin2','aaaaa',25)"; $pdo -> exec($sql2); //exec方法执行sql语句,增删改。
1.3 PDO的query方法,执行查询方法,返回PDOstatement对象。
1.31返回PDOstatement对象。
$sql = "select * from user"; $pdo_statement = $pdo -> query($sql); var_dump($pdo_statement); //query方法执行查询sql语句,返回pdostatement对象 /* var_dump返回结果如下: object(PDOStatement)#2 (1) { ["queryString"]=> string(18) "select * from user" } */
1.32 fetch方法,获取一条数据,返回关联数组和索引数组。
$res = $pdo_statement -> fetch(); //获取一条数据,返回索引数组加关联数组 /* var_dump返回结果如下: array(6) { ["name"]=> string(5) "admin" [0]=> string(5) "admin" ["passwd"]=> string(6) "123456" [1]=> string(6) "123456" ["age"]=> string(2) "22" [2]=> string(2) "22" } */
1.33
fetchall方法,获取所有数据,返回索引数组和关联数组。
$res = $pdo_statement -> fetchall(); //获取所有数据,返回索引数组加关联数组 /* var_dump返回结果如下: array(2) { [0]=> array(6) { ["name"]=> string(5) "admin" [0]=> string(5) "admin" ["passwd"]=> string(6) "123456" [1]=> string(6) "123456" ["age"]=> string(2) "21" [2]=> string(2) "21" } [1]=> array(6) { ["name"]=> string(6) "admin2" [0]=> string(6) "admin2" ["passwd"]=> string(3) "aaa" [1]=> string(3) "aaa" ["age"]=> string(2) "25" [2]=> string(2) "25" } } */
1.34 fetchcolumn方法,获取一个字段的值,参数为1代表获取第一行第2列的数据。
$res = $pdo_statement -> fetchcolumn(1); //获取一个字段的值,参数为1代表获取第一行第2列的数据。 /* var_dump返回结果如下: string(6) "123456" */
1.35 通过常量约束函数返回数组类型。
/* 通过常量约束返回的数据格式: PDO::FETCH_ASSOC,表示关联类型的数据 PDO::FETCH_NUM,表示索引数据 PDO::FETCH_BOTH,表示关联、索引数据 */ $res = $pdo_statement -> fetchall(PDO::FETCH_ASSOC); //获取所有数据,返回关联数组 var_dump($res); /* var_dump返回结果如下: array(2) { [0]=> array(3) { ["name"]=> string(5) "admin" ["passwd"]=> string(6) "123456" ["age"]=> string(2) "21" } [1]=> array(3) { ["name"]=> string(6) "admin2" ["passwd"]=> string(3) "aaa" ["age"]=> string(2) "25" } } */ ?>
1.4 quote方法将字符串中的引号进行转义。
$data = "a 'or' 1"; $res = $pdo -> quote($data); var_dump($res); /* vardump输出结果: string(13) "'a \'or\' 1'" */
1.5 PDO处理错误信息,errorInfo方法返回错误信息包含错误码、errorCode函数返回错误码。
$sql = "sellct from user"; $res = $pdo -> exec($sql); var_dump($pdo->errorcode()); /* var_dump返回结果如下: string(5) "42000" */ var_dump($pdo->errorinfo()); /* var_dump返回结果如下: array(3) { [0]=> string(5) "42000" [1]=> int(1064) [2]=> string(162) "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'sellct from user' at line 1" } */
1.6 PDO事务处理
$pdo -> beginTransaction(); //开启事务 $sql1 = "update user set age=age+1 where name = 'admin'"; $res1 = $pdo->exec($sql1); $sql2 = "update user set age=age-1 where name = 'admin2'"; $res2 = $pdo->exec($sql2); if($res1 && $res2){ $pdo ->commit(); //如果两条语句都执行成功提交事务。 echo "提交成功."; }else{ $pdo ->rollback(); //如果有一条语句执行失败回滚事务。 echo "执行失败,rollback。" ; }
1.7 lastInsertId函数,获得上次执行插入操作时产生的主键的值。
$sql2 = "insert into user values('admin2','aaaaa',25)"; $pdo -> exec($sql2); //exec方法执行sql语句,增删改。 var_dump($pdo->lastInsertId()) /* var_dump返回结果如下: string(1) "0" */
