Blogger Information
Blog 36
fans 4
comment 3
visits 31560
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
7.24 CURD语句的基本语法,PDO中操作数据表的基本步骤insert/update/delete/select
大灰狼的博客
Original
653 people have browsed it

数据库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;

运行实例 »

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


Correction status:qualified

Teacher's comments:execute()传参,默认都是字符串类型,要注意一下
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
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!