说明:
在“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 '
当前表中没有数据~~
';}
} catch (PDOException $e) {
echo '
查询失败:'.$e->getMessage().'
';}
?>
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 '';
} else {
echo '';
}
} catch (PDOException $e) {
echo $e->getMessage();
}
}
else {
echo '
要删除的记录不存在~~
';}
要点:先查询,再更新/删除,是更完善更安全的处理方法。