PHP连接MySQL数据库实现增删改查(多种查询方式)

PHP 专栏收录该内容
1 篇文章 0 订阅

在公司里面的话,会把常用的函数做成一个类,但万变不离其中。在这儿我用一些实例来介绍一些基础性的操作。该文章若有不善之处还望您直言不讳。

废话不多说入正题,请看下方目录:


目录直通车

1. PHP内置函数介绍

2. 连接数据库

3. 实现增删改查

1)增添数据 

2)删除数据

3)修改数据

4)查询数据

查询不重复的数据

条件查询

数据整合(聚合)


1. PHP内置函数介绍

先介绍一些PHP的常用函数作为参考,再进行操作就很容易了。

1) 连接数据库

 Mysql_connect(ip,用户名,密码) or die (‘连接失败!’);

2) 选择数据库(两种方法)

方法一: Mysql_query(‘use 数据库名’);

方法二: Mysql_select_db(‘数据库名’);

3)设置客户端的字符编码

如果遇到了乱码的问题加入下面这串代码就ok了。

sql_query(set names UTF-8);//解决字符乱码问题

4)执行SQL语句

Mysql_query(SQL语句);

5)从结果集中取得一行作为数组返回查询结果

mysql_fetch_row();

该函数主要用于查询结果集,其区别在于函数的返回值不是一个字符串,而是一个数组。在取出最后一行后,函数将返回false,循环结束。就可以把结果集中的所有数据逐行取出并显示。

实例:

<?php

$sql = mysql_query("select * from table_name");//将表table_name的全部数据存放到$sql

$row = mysql_fetch_row($sql);//获取$sql里面的第一个数据作为数组存储在$row中

if ($_POST["Submit"]=="查询"){
//如果从前端接收到的value为‘查询’

    $keyword= $_POST["red"];//从前端接收到的查询关键字存储到$name

    $sql = mysql_query("select * from table_name where color like '%".trim($keyword)."%'"); //执行模糊查询

    $row = mysql_fetch_row($sql);  //逐行获取查询结果,返回值为数组

}

?>

​​​​​​

2. 连接数据库

一般在公司里面都是框架的二次开发,不会涉及到自己写连接数据库的代码。说白了,无非是数据库连接的函数使用。

实例:

方式一:

<?php  

$link=@Mysql_connect(‘URL’,’数据库账号’,’数据库密码’) or die (‘连接失败!’);

Mysql_select_db(‘数据库名称’) or die (‘选择失败!’);

?>

方式二:

<?php
$myhost = 'localhost:3306';      // mysql服务器主机地址
$myusername = 'root';            // mysql用户名
$mypassword = 'DJun';            // mysql用户名密码
$conn = mysqli_connect($myhost , $myusername , $mypassword );
if(! $connect )
{
    die('连接失败: ' . mysqli_error($connect ));
}

mysqli_query($connect , "set names utf8");// 设置编码,防止中文乱码

3. 实现增删改查

增删改查可以通过三种方式实现:命令化界面(CMD)、网页代码、软件。

在命令化的界面和网页代码中,增删改查对应四类SQL语句,原理都是一样的。另外一种方式就是使用如Navicat类似软件图形化操作。简单的为大家介绍四类SQL语句:

1)增添数据 

在标准SQL语句中的INSERT语句形式:

INSERT INTO tablename(表名) VALUES(列值);

实例:

INSERT INTO users(id, name, age) VALUES(1102, 'DJun', 21);

而在MySQL中还有另一种形式:

INSERT INTO tablename SET column_name1 = value1, column_name2 = value2,…;

实例:

INSERT INTO users SET id = 1102, name = 'DJun', age = 21;

2)删除数据

通用语法:

(补充:[WHERE Clause] 表示的是筛选数据的语句 )

DELETE FROM table_name [WHERE Clause]

实例:

DELETE FROM users WHERE name='DJun';

3)修改数据

通用语法:

UPDATE table_name SET field1=new-value1, field2=new-value2[WHERE Clause]

实例:

UPDATE users SET name='DJun' WHERE id=1102;

4)查询数据

通用语法:

(补充:* 号表示查询全部的数据;若是该表中的每一列数据不是全部都要使用的话,将*改成如id,name等字段。数据量大的话这样处理可增加查询速度)

SELECT * FROM table_name [WHERE Clause];

实例:

用逗号分割,列出需要显示的字段

select id,name,age from users;

数据量大的话均存在数据重复的问题,若需要查询不重复记录该如何处理?如果需要按照条件查询该如何处理?如果是商品重复了,需要统计整合这个商品的数量该如何处理?


查询不重复的数据

通用语法:

select distinct 字段 from 表名;

实例:

select distinct name from users;//查询名字不相同的用户;
select distinct name,age from students;//查询名字和年龄同时不同的用户

注意:

distinct必须放在最开头
distinct只能使用需要去重的字段进行操作。  ----也就是说我distinct了name,age两个字段,我后面想根据id进行排序,是不可以的,因为只 能name,age两个字段进行操作.
distinct去重多个字段时。就是说:几个字段同时重复时才会被过滤。

条件查询

通用语法:

select 字段 from 表名 where 条件;

实例:

select * from users where sex='男' and age>20;

筛选出来的数据如果需要按照年龄来升序(ASC)或降序(DESC)排序的话:

只需在SELECET的语句最后加上 by age ASC或 by age DESC。

如果希望只取出年龄最小的前五个人的数据的话:

select ... [limit 起始偏移量,行数]

SELECT * from users ORDER BY age ASC limit 0,5;

数据整合(聚合)

通用语法:

select 聚合函数(字段) 表名 [where Clause] [group by field1,field2...] [with rollup] [having 条件];

补充:

1. 聚合函数(字段) ,常用的四个聚合函数 : sum(求和)、count(*)(记录数)、max(最大值)、min(最小值)。

2.group by关键字 表示要进行分类聚合的字段。比如要按照部门分类统计员工数量,部门就应该写在group by 后面。

3.with rollup 是可选语法,表明是否对分类聚合后的结果进行再汇总

4.having 关键字表示对分类后的结果再进行条件过滤。

实例:

//得到与id为1的年龄相同的用户的用户名并按照这些用户的注册时间按升序排列
SELECT username,count(1) FROM users GROUP BY age ORDER BY createtime ASC;

//得到与id为1的年龄相同的用户且人数大于4的用户名
SELECT username,count(1) FROM users GROUP BY age HAVING count(1)>4;

//统计与id为1的年龄相同的用户的薪水总额,最低薪资,最高薪资
SELECT count(1),min(salary),max(salary) FROM users GROUP BY age;

实现增删查改,无非是执行相应的sql语句。或者说是执行动态的sql 语句,可以执行在程序中给sql 语句的某个参数赋值后,执行sql实现功能。

 

 

 

评论 2 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页

打赏作者

MrDJun

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值