Blogger Information
Blog 39
fans 0
comment 0
visits 34085
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
CURD语句和 PDO中操作数据表--2019/07/24
LISTEN的博客
Original
594 people have browsed it

写出常用的CURD语句的基本语法; PDO中操作数据表的基本步骤, 并实例演示insert/update/delete/select

1、数据库配置文件

实例

<?php
//数据库连接参数
return [
    'type'=>'mysql',
    'host'=>'localhost',
    'dbname'=>'listen0724',
    'username'=>'root',
    'password'=>'root'
];

运行实例 »

点击 "运行实例" 按钮查看在线实例

2、使用 PDO连接数据库

实例

<?php
$db=require 'database.php';

// 连接数据库: PDO
// 配置数据源DSN信息
//$dsn = '数据库的类型:host=数据库主机名;dbname=默认数据库名称';
$dsn="{$db['type']}:host={$db['host']};dbname={$db['dbname']}";

// 连接数据库
try{
    $pdo=new PDO($dsn,$db['username'],$db['password']);
}catch (PDOException $e){
    die('数据库连接失败:'.$e->getMessage());
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

3、insert新增记录

实例

<?php
// 新增记录

// 1. 连接数据库
require __DIR__ . "/db/connect.php";

// 2. 创建SQL语句模板
$sql='insert into `nav` set `name`=:name,`alias`=:alias,`image`=:image';

// 3. 创建SQL语句对象 `prepare()`: 预处理方法, 用来生成预处理对象`PDOStatement`
$stmt=$pdo->prepare($sql);

// 4. 将变量绑定到SQL语句模板的命名占位符上
$name='download';
$alias='下载中心';
$image='nav5.jpg';
// `bindParam()`: 将参数绑定到SQL语句模板上
$stmt->bindParam('name',$name,PDO::PARAM_STR);
$stmt->bindParam('alias',$alias,PDO::PARAM_STR);
$stmt->bindParam('image',$image,PDO::PARAM_STR);

// 5. 执行SQL操作  `execute()`: 执行SQL语句(读/写)  `rowCount()`: 返回受影响的记录数量(不适合SELECT)
if($stmt->execute()) {
    if($stmt->rowCount()>0){
        echo '成功添加'.$stmt->rowCount().'条记录,该记录的主键id是:'.$pdo->lastInsertId();//PDO::lastInsertId — 返回最后插入行的ID或序列值
    }
}else{
    die('<pre>'.print_r($stmt->errorInfo(),true)); // `errorInfo()`: 返回错误信息数组
}

// 6. 销毁pdo, 关闭连接
$pdo=null;// unset($pdo) 等价

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

<?php
// 新增记录

// 1. 连接数据库
require __DIR__ . "/db/connect.php";

// 2. 创建SQL语句模板: 预处理对象 `prepare()`: 预处理方法, 用来生成预处理对象`PDOStatement`
$stmt=$pdo->prepare('insert into `nav` set `name`=:name,`alias`=:alias,`image`=:image');

// 3. 执行SQL操作  `execute()`: 执行SQL语句(读/写)  `rowCount()`: 返回受影响的记录数量(不适合SELECT)
$stmt->execute(['name'=>'lmmc','alias'=>'栏目名称','image'=>'nav6.jpg']);
echo '成功添加'.$stmt->rowCount().'条记录,该记录的主键id是:'.$pdo->lastInsertId();//PDO::lastInsertId — 返回最后插入行的ID或序列值

// 4. 销毁pdo, 关闭连接
$pdo=null;// unset($pdo) 等价

运行实例 »

点击 "运行实例" 按钮查看在线实例

4、update更新操作

实例

<?php
// 更新操作

// 1. 连接数据库
require __DIR__.'/db/connect.php';

// 2. 创建SQL语句对象: 预处理对象
$stmt=$pdo->prepare('update `nav` set `name`=:name,`alias`=:alias where `nav_id`=:nav_id');

// 3. 执行SQL语句
$stmt->execute(['name'=>'zxly','alias'=>'在线留言','nav_id'=>'6']);
echo '成功的更新'.$stmt->rowCount()."条记录";

// 4. 关闭连接:
$pdo=null;

运行实例 »

点击 "运行实例" 按钮查看在线实例

5、delete删除记录

实例

<?php
// 删除记录

// 1. 连接数据库
require __DIR__.'/db/connect.php';

// 2. 创建SQL语句模板,创建SQL语句对象
$stmt=$pdo->prepare('delete from `nav` where `nav_id`=:nav_id');

// 3. 执行SQL语句
$stmt->execute(['nav_id'=>'6']);
echo '成功删除了' . $stmt->rowCount() . '条记录';

// 4. 关闭连接:
$pdo=null;

运行实例 »

点击 "运行实例" 按钮查看在线实例

6、select 查询记录

实例

<?php
// 查询:

// 1. 连接数据库
require __DIR__ . '/db/connect.php';

// 2. 创建SQL语句对象: 预处理对象
$stmt=$pdo->prepare('select * from `nav` where `nav_id`>=:nav_id');

// 3. 执行SQL语句
$stmt->execute(['nav_id'=>3]);

// 遍历
// 查询1: fetch() + while()
//PDO::FETCH_ASSOC 获取模式
//while($nav=$stmt->fetch(PDO::FETCH_ASSOC)){
//    echo '<pre>'.print_r($nav,true);
//}


// 查询2: fetchAll()  遍历, 返回二维数组
//echo '<pre>'.print_r($stmt->fetchAll(PDO::FETCH_ASSOC),true);

$navs=$stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($navs as $nav){
    echo '<pre>'.print_r($nav,true);
}

// 4. 关闭连接
$pdo=null;

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

<?php
// 查询: 将结果集中的字段列表与变量绑定
// 查询3: bindColumn()

// 1. 连接数据库
require __DIR__ . '/db/connect.php';

// 2. 创建SQL语句对象: 预处理对象
$stmt=$pdo->prepare('select * from `nav` where `nav_id`>=:nav_id');

// 3. 执行SQL语句
$stmt->execute(['nav_id'=>3]); // 获取结果集

// 将结果集中的记录中的字段, 绑定到指定的变量上
$stmt->bindColumn('name',$name);
$stmt->bindColumn('alias',$alias);

// 遍历  mb_substr() 函数返回字符串的一部分,
while($stmt->fetch(PDO::FETCH_ASSOC)){
    echo '栏目:'.$name.'<br>栏目中文名称:'.mb_substr($alias,0, 20).'<hr>';
}

// 4. 关闭连接
$pdo=null;

运行实例 »

点击 "运行实例" 按钮查看在线实例

7、创建SQL文件

实例

-- Adminer 4.7.2 MySQL dump

SET NAMES utf8;
SET time_zone = '+00:00';
SET foreign_key_checks = 0;
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';

DROP TABLE IF EXISTS `details`;
CREATE TABLE `details` (
  `detail_id` int(2) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(100) NOT NULL COMMENT '详情名称',
  `images` varchar(100) NOT NULL,
  `detail` text NOT NULL,
  `nav_id` int(3) unsigned NOT NULL COMMENT '所属栏目',
  PRIMARY KEY (`detail_id`),
  KEY `nav_id` (`nav_id`),
  CONSTRAINT `details_ibfk_1` FOREIGN KEY (`nav_id`) REFERENCES `nav` (`nav_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `details` (`detail_id`, `name`, `images`, `detail`, `nav_id`) VALUES
(1,	'公司新闻',	'1.jpg',	'公司全面实施ISO9000、2000国际质量管理和***体系,公司全面实施ISO9000、2000国际质量管理和***体系',	1),
(2,	'行业新闻',	'2.jpg',	'HTML5是用于取代1999年所制定的 HTML 4.01 和 XHTML 1.0 标准的 HTML 标准版本,现在仍处于发展阶段,但大部分浏览器已经支持某些 HTML5 技术。',	1),
(3,	'产品大类1',	'3.jpg',	'产品大类1,产品大类1,产品大类1,产品大类1,产品大类1',	2),
(4,	'产品大类2',	'4.jpg',	'产品大类2,产品大类2,产品大类2,产品大类2,产品大类2',	2),
(5,	'产品大类3',	'5.jpg',	'产品大类3,产品大类3,产品大类3,产品大类3,产品大类3',	2),
(6,	'公司简介',	'6.jpg',	'公司简介,公司简介,公司简介,公司简介,公司简介',	3),
(7,	'工作环境',	'7.jpg',	'一处温馨又不失严谨的工作环静,好促使人殷勤工作,充满上进心。 整齐橙色桌椅让人心念集中奋发,加倍用心,专研工作。 ',	3),
(8,	'公司历史',	'8.jpg',	'中国有着五千年悠久的历史--我们了望着两千年前建造的万里长城,心想着雄壮的兵马俑;有形象生动的甲骨文, 有龙飞凤舞的狂草',	3),
(9,	'联系方式',	'9.jpg',	'电话:0595-123456、手机:15260123467、邮箱:123@qq***、地址:福建省厦门市',	4);

DROP TABLE IF EXISTS `nav`;
CREATE TABLE `nav` (
  `nav_id` int(3) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(30) NOT NULL COMMENT '栏目名称',
  `alias` varchar(30) NOT NULL COMMENT '栏目别名',
  `image` varchar(100) NOT NULL COMMENT '栏目图片',
  PRIMARY KEY (`nav_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `nav` (`nav_id`, `name`, `alias`, `image`) VALUES
(1,	'news',	'新闻中心',	'nav1.jpg'),
(2,	'products',	'产品中心',	'nav2.jpg'),
(3,	'aboutUs',	'关于我们',	'nav3.jpg'),
(4,	'contactUs',	'联系我们',	'nav4.jpg'),
(5,	'download',	'下载中心',	'nav5.jpg');

DROP TABLE IF EXISTS `system`;
CREATE TABLE `system` (
  `sys_id` int(1) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  `title` varchar(50) NOT NULL COMMENT '页面标题',
  `desc` varchar(200) NOT NULL COMMENT '页面描述',
  `key` varchar(50) NOT NULL COMMENT '关键字',
  `copy` varchar(50) NOT NULL COMMENT '版权',
  PRIMARY KEY (`sys_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `system` (`sys_id`, `title`, `desc`, `key`, `copy`) VALUES
(1,	'Listen公司',	'Listen公司是一家互联网信息技术***',	'互联网,信息技术',	'Listen');

-- 2019-07-25 12:23:21

运行实例 »

点击 "运行实例" 按钮查看在线实例

Correction status:qualified

Teacher's comments:如果你了解过mysqli, 可以发现pdo做了大量的简化
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post