博客列表 >7.24 CURD语句的基本语法,PDO中操作数据表的基本步骤insert/update/delete/select

7.24 CURD语句的基本语法,PDO中操作数据表的基本步骤insert/update/delete/select

大灰狼的博客
大灰狼的博客原创
2019年07月28日 15:06:02652浏览

数据库CRUD操作

首先先了解一下什么是数据库CRUD操作?

它代表创建(Create)、更新(Update)、读取(Read)和删除(Delete)操作。

程序员们日常口述也喜欢用 增、删、改、查来表达。

------------------------------------------------------------------

创建一个数据库 

CREATE DATABASE 语句用于在 MySQL 中创建数据库。

语法

CREATE DATABASE database_name

实例:

CREATE DATABASE `dahuilang` COLLATE 'utf8mb4_unicode_ci';

`dahuilang` 为数据库名  'utf8mb4_unicode_ci' 为数据库字符集编码。

注意:数据名名包裹符号是键盘~ · 键(Esc下按键、!1按键前面的 ) 。字符集参数包裹是单引号。

------------------------------------------------------------------

创建一个表(并同时创建多个字段,至少要创建一个字段)

语法

CREATE TABLE `表名` (·字段名· char(20) NOT NULL ) ENGINE='InnoDB';

实例:

CREATE TABLE `user` (
-- 创建user_id字段 int类型长度9 无符号 非空 自动增量 主键
  `user_id` int(9) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
-- 创建user_name字段  char定长类型限20个字符 不允许为空
  `user_name` char(20) NOT NULL,
-- 创建user_age字段 tinyint类型长度3 非空
  `user_age` tinyint(3) NOT NULL,
-- 创建user_info字段 varchar类型 限长度500字符 非空
  `user_info` varchar(500) NOT NULL
) ENGINE='InnoDB'; -- 设置表引擎为InnoDB 支持索引和事务

上面语句是在数据库里创建一个 user表 并创建4个字段

------------------------------------------------------------------

删除指定表中 一个或多个字段


删除user表中一个 user_info字段

ALTER TABLE `user` DROP `user_info`;


删除user表中user_name,user_age 2个字段(关键词 DROP多个字段逗号隔开 )。

ALTER TABLE `user`
DROP `user_name`,
DROP `user_age`;


------------------------------------------------------------------

修改/更新一个字段名

ALTER TABLE `user`
CHANGE `user_id` `user_ss` int(9) unsigned NOT NULL AUTO_INCREMENT FIRST;


------------------------------------------------------------------

修改/更新 一个表名

ALTER TABLE `user`
RENAME TO `user22`;


------------------------------------------------------------------

查询表中数据

查询user22表 返回所有字段 的前50条数据

SELECT * FROM `user22` LIMIT 50

查询user22表 返回 name 和age字段 的前20条

SELECT `name`,`age` FROM `user22` LIMIT 20

注:LIMIT 5  表示查询 前5条(0~4), LIMIT 2,5 表示返回 第3条开始取5条数据(3 4 5 6 7条)


 limit m,n
其中m是指记录开始的index,从0开始,表示第一条记录
n是指从第m+1条开始,取n条。

========================================一条分割线

PDO中操作数据库的基本步骤

1 创建PDO对象

首先准备设置PDO所需的参数信息(数据库类型 数据库 数据库名字  账号 密码)

$dns='数据库类型:host=数据库主机地址;dbname=默认数据库名称';

$username='root';

$password='root';

$pdo=new PDO($dns,$username,$password);

因为只要页面操作数据就得用到PDO来操作数据库 所以以上方法写到单独页面以待调用。connect.php

2 需要操作数据库页面加载connect.php

require __DIR__.'/inc/connect.php'; 

3.创建预处理对象 及设置SQL语句到参数

$stmt=$pdo->prepare('INSERT INTO `menu` SET `classify`=:classify,`nameEn`=:nameEn,`nameCN`=:nameCn');

4 执行sql预处理对象的sql语句

$stmt->execute(['classify'=>1,'nameEn'=>'ldh','nameCn'=>'刘德华']);

5 关闭数据库链接PDO对象

$pdo=null; 或使用 unset($pdo) 其中一条


--------------------------------------------------------------------------实例
database.php

<?php
//将配置信息 封装成数组
	return[
	'type'=>'mysql',
	'host'=>'127.0.0.1',
	'dbname'=>'music',
	'username'=>'root',
	'password'=>'root',
	];
?>

connect.php

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

$dns="{$db['type']}:host={$db['host']};dbname={$db['dbname']}";
$username=$db['username'];
$password=$db['password'];

try{
	$pdo=new PDO($dns,$username,$password);
//	var_dump($pdo); //可以打印pdo对象  有对象就说明成功了
}catch(PDOException $e){
	die('连接失败'.$e->getMessage());
}


插入数据

实例

<?php
//插入数据库
//1.链接数据库
require __DIR__.'/inc/connect.php';

//3 创建 sql预处理对象+ 2 创建sql语句
$stmt=$pdo->prepare('INSERT INTO `menu` SET `classify`=:classify,`nameEn`=:nameEn,`nameCN`=:nameCn');

//4 给sql预处理对象的模板绑定值
$classify=4;
$nameEn='ljj2';
$nameCn='林俊杰2';

//5执行SQL语句 $stmt->execute() 返回布尔值
$stmt->execute(['classify'=>$classify,'nameEn'=>$nameEn,'nameCn'=>$nameCn]);

echo "成功添加".$stmt->rowCount()."条记录,主键:".$pdo->lastInsertId();

//6关闭数据库对象 unset($pdo)或$pdo=null;
$pdo=null;

运行实例 »

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


更新数据

实例

<?php
//更新数据库
//1.链接数据库
require __DIR__.'/inc/connect.php';

//3 创建 sql预处理对象+ 2 创建sql语句
$stmt=$pdo->prepare('UPDATE `menu` SET `classify`=:classify,`nameEn`=:nameEn,`nameCN`=:nameCn WHERE `nameEn`=:nameEn2 AND `nameCn`=:nameCn2 ' );

//4 给sql预处理对象的模板绑定值
$classify=4;
$nameEn='ljj888';
$nameCn='林俊杰555';

$nameEn2='ljj3';
$nameCn2='林俊杰3';

//5执行SQL语句 $stmt->execute() 返回布尔值
$stmt->execute(['classify'=>$classify,'nameEn'=>$nameEn,'nameCn'=>$nameCn,'nameEn2'=>$nameEn2,'nameCn2'=>$nameCn2]);

echo "成功更新".$stmt->rowCount()."条记录,主键:".$pdo->lastInsertId();

//6关闭数据库对象 unset($pdo)或$pdo=null;
$pdo=null;

运行实例 »

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


查询数据

实例

<?php
//查询数据库 
//1.链接数据库
require __DIR__.'/inc/connect.php';

//3 创建 sql预处理对象+ 2 创建sql语句
$stmt=$pdo->prepare('SELECT * FROM `menu`  WHERE `nameEn`=:nameEn2 AND `nameCn`=:nameCn2 ' );

//4 给sql预处理对象的模板绑定值
$nameEn2='ljj';
$nameCn2='林俊杰';

//5执行SQL语句 $stmt->execute() 返回布尔值
$stmt->execute(['nameEn2'=>$nameEn2,'nameCn2'=>$nameCn2]);

//echo "查询到5条记录".$stmt->rowCount()."条记录,主键:".$pdo->lastInsertId();

//遍历查询结果 fetch()返回结果集中一条记录
//echo "<pre>".print_r($stmt->fetch(),true);
//因为fetch()没有设置获取模式参数  所以结果集 既返回了索引数组部分也返回了关联数组部分

//只获取关联数组部分的数据 $stmt->fetch(PDO::FETCH_ASSOC)
//echo "<pre>".print_r($stmt->fetch(PDO::FETCH_ASSOC),true);

//循环输出查询结果--------------方法一 fetch (大量数据 推荐使用此方式)
//while ($menu=$stmt->fetch(PDO::FETCH_ASSOC)) {
//	echo "<pre>".print_r($menu,true);
//}

//循环输出查询结果--------------方法二 fetchALL (少量数据 如1000条内 因为数据会全部加载到内存)
//$menu=$stmt->fetchALL(PDO::FETCH_ASSOC);
//foreach ($menu as $key => $value) {
//	echo "<pre>".print_r($value,true);
//};

//循环输出查询结果--------------方法三 将2个字段绑定 比如 名字和电话号码 (作为了解使用不多)
$stmt->bindColumn('nameCn',$nameCn);
$stmt->bindColumn('nameEn',$nameEn);
//遍历 mb_substr(0,20) 字符串截取0到第20个
while ($stmt->fetch(PDO::FETCH_ASSOC)) {
	echo "中文名:".$nameCn2." 英文简称:".$nameEn2."<br>";
}

//6关闭数据库对象 unset($pdo)或$pdo=null;
$pdo=null;

运行实例 »

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


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议