说明:
在“PHP MySQLi 增删查改(CURD)实例-面向对象方法”(http://hanyufeng.php.cn/blog/detail/2155)的基础上,改用PDO对象实现。
示例源码:
connetc.php
<?php //使用配置文件保存参数 require 'config.php'; //使用PDO对象 $pdo = new PDO('mysql:dbname='. DB_NAME,DB_USER, DB_PASS);//host取默认值 //$pdo = new PDO('mysql:dbname='. DB_NAME.';charset=utf8',DB_USER, DB_PASS); $pdo->query('set names utf8');//设置字符集编码,注意不要写成utf-8。也可以在实例化PDO对象时设置,如上一行。
list.php 查询数据
<?php $pageTitle = '用户信息列表'; include 'inc/header.php'; //连接数据库 require 'inc/connect.php'; //查询用户信息表user $sql = "SELECT `id`,`name`,`email` FROM user"; //创建查询语句 $rows = []; //创建查询结果容器,初始为空数组,该数组最终会成为一个二维数组,与数组表对应 try { $pdo_stmt = $pdo->query($sql);//查询 if ($pdo_stmt->rowCount() > 0) {//如果数据不为空 $i =0; while ($row = $pdo_stmt->fetch()) { //从结果集的第一条记录开始抓取数据到绑定的变量中 //继续沿用$rows数组保存数据,以便重复使用输出数据到页面的代码 $rows[$i] = ['id'=>$row['id'],'name'=>$row['name'],'email'=>$row['email']]; $i++; } } else { echo '<p style="color:red">当前表中没有数据~~</p>'; } } catch (PDOException $e) { echo '<p>查询失败:'.$e->getMessage().'</p>'; } ?>
delete.php
<?php require 'inc/connect.php'; //先查询,再更新/删除,更完善更安全 $id = $_GET['id']; $sql = "select * FROM user WHERE id=".$id; $pdo_stmt = $pdo->query($sql); if($pdo_stmt->rowCount() == 1){ //按id查询,如果存在,只应返回1条记录 $row = $pdo_stmt->fetch(); $sql = "DELETE FROM user WHERE id=". $row['id']; try { $affected_rows = $pdo->exec($sql); if($affected_rows == 1){ echo '<script>alert("成功删除'.$affected_rows.'条记录")</script>'; } else { echo '<script>alert("删除失败")</script>'; } } catch (PDOException $e) { echo $e->getMessage(); } } else { echo '<p>要删除的记录不存在~~</p>'; }
要点:先查询,再更新/删除,是更完善更安全的处理方法。