今天在php中文网学习了一下PDO,记个笔记吧
1、首先肯定要知道什么是PDO(PHP Data Object):
解释是:php的数据对象,就是为访问数据库定义的一个轻量级的大多数数据库都能兼容的一致接口;
2、为什么要用它呢?
因为啊,PDO为所有的数据库类型提供了统一的接口,我也没试过所有的哈,别人说的。。。PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。
PDO原生支持预处理,防止SQL注入,web安全都考虑到了哈;
哦对,据说这是一种趋势,真的假的咱们还是跌继续看;
3、环境:
5.0以前是不能用的,我用的已经死7了,所以环境可以不考虑,默认就是打开的,可以在php.ini或者phpinfo中查看;
4、操作步骤:
(1)创建数据源与PDO对象,这就链接上了,可以直接搞成一个配置文件哈
<?php /** * pdo链接数据库配置参数 */ $dbType = "mysql"; $host = "localhost"; $dbName = "edu"; $user = "root"; $password = "123";
//新建pdo对象 $pdo = new PDO($dsn,$user,$password);(2)调用PDO对象的方法完成增删改查操作:
增删改简单:
//添加 $sql = "INSERT edu_user (name,create_time) VALUES ('admin2','{$createTime}') "; $num = $pdo->exec($sql); $lastId = $pdo->lastInsertId(); if($num > 0){ echo "access insert!".$num."条记录,新增id为:".$lastId; }else{ print "error"; }查一条的话使用fetch();
查全部数据使用fetchAll();
//fetchAll获取全部数据 $sql = "SELECT id,name,create_time FROM edu_user "; $result = $pdo->query($sql); if($result && $result->rowCount()){ echo "<h2 align='center'>所有的用户</h2>"; echo "<table border='1' cellpadding='5' cellspacing='0' width='70%' align='center'>"; echo "<tr bgcolor='#87ceeb'><th>id</th><th>name</th><th>time</th>"; $result->setFetchMode(PDO::FETCH_ASSOC); $rows = $result->fetchAll(); foreach ($rows as $row){ echo "<tr align='center'>"; echo "<td>".$row['id']."</td><td>".$row['name']."</td><td>".$row['create_time']."</td>"; echo "</tr>"; } echo "</table>"; echo "<h3 align='center'>共有".$result->rowCount()."条记录"."</h3>"; }在这里注意:结果集也就是$result,是可以直接当二维数组来处理的,但是应该是会有影响,还是按上面的方法吧;
最后关掉链接:
unset($pdo);
(3)处理异常:
}catch (PDOException $exception){ die("error:".$exception->getMessage()); }
4、预处理:
//预处理更新 $update_time = date("Y-m-d H:i:s"); $sql = "UPDATE edu_user SET name=:name,update_time=:update_time WHERE id=4"; $stmt = $pdo -> prepare($sql); $num = $stmt -> execute([":name" => "admin3",":update_time" => $update_time]); if($num > 0){ echo "成功更新了".$num."条记录。"; }
简单的学了一下,接下来就是:多练多练多练!
记得以前我们以为老师曾说过:你们,就是欠练!哈哈