说明:
在“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>';
}要点:先查询,再更新/删除,是更完善更安全的处理方法。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号