批改状态:合格
老师批语:数据库只是目录, 数据表者是文档, 这和日常工作中的概念是一致的, 只是换个叫法罢了, 不要想太多了
<?php// 连接数据库namespace pdo_edu;//以下两句是自动写的(当写完24-27句)use Exception;use PDO;// 加载连接参数文件$config = require __DIR__ . '/config/database.php';var_dump($config) ;printf('<pre>%s</pre>',print_r($config,true));// PDO 是所有类型数据库的访问接口,连接的三要素:// DSN(数据源)、用户名、密码。$type = $config ['type'];$host = $config ['host'];$dbname = $config ['dbname'];$username = $config ['username'];$password = $config ['password'];// 创建DSN$dsn = sprintf('%s:host=%s;dbname=%s',$type,$host,$dbname);try{//连接数据库$pdo = new PDO($dsn,$username,$password);var_dump($pdo);}catch (Exception $e){die($e->getMessage());}
实例效果
<?php// 单条查询namespace pdo_edu;use PDO;// 1.连接数据库require 'connect-exe.php';// 2.查询数据库(查询语句)$sql = 'SELECT * FROM `table01` where `age`>15';// 预处理:预处理对象$stmt , 就是SQL语句对象.防止SQL注入攻击$stmt = $pdo->prepare($sql);// var_dump($stmt);// printf('<pre>%s</pre>',print_r($stmt,true));// 使用预处理对象调用 execute()执行这条sql语句$stmt->execute();// printf('<pre>%s</pre>',print_r($stmt,true));//查询一条记录.PDO::FETCH_ASSOC表示只查询关联部分。$hero = $stmt->fetch(PDO::FETCH_ASSOC);var_dump($hero);printf('<pre>%s</pre>',print_r($hero,true));// 3.关闭数据库unset($pdo);
实例效果
<?php// 多条查询namespace pdo_edu;use PDO;// 1.连接数据库require 'connect-exe.php';// 2.操作数据库$sql = 'SElECT * FROM `table01` where `age`>15';// 预处理对象$stmt就是SQL语句对象:为了防止 SQL注入$stmt = $pdo->prepare($sql);// 使用预处理对象调用 execute()执行这条sql语句$stmt->execute();//查询多条记录用fecthAll。PDO::FETCH_ASSOC表示只查询关联部分。$hero = $stmt->fetchAll(PDO::FETCH_ASSOC);printf('<pre>%s</pre>',print_r($hero,true));// 3.关闭数据库unset($pdo);
实例效果
<?php// 新增数据namespace pdo_edu;use PDO;require 'connect-exe.php';$sql = 'insert `table01` set `name`=?,`skill`=?,`age`=?';$stmt = $pdo->prepare($sql);$data = ['老顽童','左右互搏',65];$stmt->execute($data);// 判断是否执行成功// $stmt->rowCount(): 返回写操作产生的受影响的记录数量if($stmt->rowCount()===1){echo '新增成功!新增记录的主键是: '.$pdo->lastInsertId();}else{echo '新增失败!';print_r($stmt->errorInfo());}unset($pdo);
实例效果
<?php// 更新数据namespace pdo_edu;use PDO;require 'connect-exe.php';// $sql = "UPDATE 表名 SET 字段=新值 WHERE 更新条件"$sql = "UPDATE `table01` set `skill`=? where `id`=?";$stmt = $pdo->prepare($sql);$data = ['九阳神功',8];$stmt->execute($data);print_r($stmt->errorInfo());die;// 判断是否执行成功// $stmt->rowCount(): 返回写操作产生的受影响的记录数量if ($stmt->rowCount() === 1) {echo '更新成功';} else {echo '没有记录被更新';print_r($stmt->errorInfo());}// 3. 关闭连接[可选]unset($pdo);
<?php// 删除数据namespace pdo_edu;use PDO;require 'connect-exe.php';// $sql = "DELETE FROM 表名 WHERE 删除条件"$sql = "delete from `table01` where `id`=8";$stmt = $pdo->prepare($sql);$stmt->execute();if($stmt->rowCount()===1){echo '删除成功';}print_r($stmt->errorInfo());unset($pdo);
实例效果
总结:
1.经典案例:背背背,写写写。细细体会!
2.数据库知识薄弱,用得少,有些基本概念混淆了,比如查询时用数据库名来查,老是出错,后来才发现应该用表名查,所以说多练多写才能记住。
3.foreach()函数不是很熟,写不出数组的另一种打印格式。看来要找一本php函数大全来查找用法。
4.更新数据的时候,发现只能更新一个字段,两个以上会提示出错,不知为何?而且没有提示成功的字样。???
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号