PHP编程基础学习记录

印象笔记中躺着一篇当时学PHP的一篇笔记,贴出来,从慕课网上学的

PHP官方手册

看代码还是直接查手册吧

 

PHP

运行在服务端、跨平台、脚本语言、免费

代码标识

1
2
3
1
2
3
4
5
6
7
8
9
10
11
例子:
A想要从自己的帐户中转1000块钱到B的帐户里。那个从A开始转帐,到转帐结束的这一个过程,称之为一个事务。在这个事务里,要做如下操作:

1. 从A的帐户中减去1000块钱。如果A的帐户原来有3000块钱,现在就变成2000块钱了。
2. 在B的帐户里加1000块钱。如果B的帐户如果原来有2000块钱,现在则变成3000块钱了。

如果在A的帐户已经减去了1000块钱的时候,忽然发生了意外,比如停电什么的,导致转帐事务意外终止了,而此时B的帐户里还没有增加1000块钱。那么,我们称这个操作失败了,要进行回滚。回滚就是回到事务开始之前的状态,也就是回到A的帐户还没减1000块的状态,B的帐户的原来的状态。此时A的帐户仍然有3000块,B的帐户仍然有2000块。

我们把这种要么一起成功(A帐户成功减少1000,同时B帐户成功增加1000),要么一起失败(A帐户回到原来状态,B帐户也回到原来状态)的操作叫原子性操作。

如果把一个事务可看作是一个程序,它要么完整的被执行,要么完全不执行。这种特性就叫原子性。
  • consistency一致性:数据库正确的改变状态后,数据库的一致性约束没有被破坏
  • isolation隔离性:事务之间独立,互不干扰
  • durability持久性:事务的提交结果,将持久保存在数据库中
    1
    2
    3
    4
    1. 在默认情况下,MySQL每执行一条SQL语句,都是一个单独的事务
    2. MySQL命令行默认设置下,事物都是自动提交的,即对于独立的每条sql语句,MySQL都是自动commit或者回滚
    3. 如果要执行多条sql语句组成的事务,使用命令begin或者start transaction开始事务,使用commitrollback结束事务
    4. 在innodb存储引擎的事务中,对于updatedeleteinsert语句,会自动给涉及数据行加排他锁

    MySQL数据操作

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    插入记录
    # 不指定字段名称
    insert tbl_name value(值,...);
    # 指定字段名称
    insert tbl_name(字段名称,...) value(值,...);
    # 一次插入多条记录
    insert tbl_name[(字段名称,...)] values(值,...),(值,...),(值,...);
    
    修改记录
    update tbl_name set 字段名称=值,... [where 条件]
    注意添加where条件,如果不添加条件,整个表中的记录都会被更新
    
    删除记录
    delete from tbl_name [where 条件]
    注意如果不添加where条件,整个表中的记录都会被删除
    
    查询记录
    select * from tbl_name 
    [where 条件{like 匹配字符 % 任意长度字符串 _ 任意一个字符}]
    [group by {col_name|position} HAVING 二次筛选 分组]
    [order by {col_name|position|expr}[asc|desc] 排序]
    [limit 限制结果集的显示条数]
    
    # group by 分组
    把值相同放到同一个组中,最终查询的结果只会显示组中的一条记录
    分组配置group_concat()函数查看组中某个字段的详细信息
    配合聚合函数使用
        count() sum() max() min() avg()    
    
    -- 按照sex分组,得到用户名详情,并且分组中的总人数
    select sex, group_concat(username) as usersDetail, count(*) as totalUsers from tbl_name group by sex;
    
    having 子句对分组结果进行二次筛选,(等同意where进行第一次筛选)
    -- 查询按照addr分组,并对于分组结果进行二次筛选,条件是组中人数 >=3
    select addr, 
    group_concat(username) as userDetail,
    count(*) as totalUsers,
    from tbl_name
    group by addr
    having count(*)>=3;
    
    # order by 排序
    order by 字段名称 asc|desc | rand() 默认升序asc
    -- 按照多个字段排序
    select id, username, age
    from tbl_name 
    order by age asc, id asc;
    
    # limit 限制结果集显示条数
    主要用于分页
    --显示结果集的前5条记录
    select id, username, age, sex 
    from tbl_name
    limit 0,5;   --0 偏移量,从0开始
    
    多表查询
    笛卡尔积的形式(不推荐)
    内连接形式**
        查询两个表中符合连接条件的记录
        select 字段名称,... from tbl_name1
        [inner] join tbl_name2
        on 连接条件
        -- 测试
        select e.id, e.username, e.age, d.depName
        from emp as e
        [inner] join dep as d
        on e.depID=d.id
    外连接形式(会把主表的记录全部显示出来)
    #左外连接
    先显示左表中的全部记录,再去右表中查询符合条件的记录,不符合以null代替
    select 字段名称,... from tbl_name1
    left [outer] join tbl_name2
    on 连接条件
    #右外连接
    先显示右表中的全部记录,再去左表中查询符合条件的记录,不符合以null代替
    select 字段名称,... from tbl_name1
    right [outer] join tbl_name2
    on 连接条件

实际操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
header('content-type:text/html;charset=utf-8');

// 1、连接数据库
$link = @mysql_connect('localhost:6606',root,root) or die('数据库连接失败');

// 2、选择数据库
mysql_select_db('vuldb') or die('选择数据库不存在');

// 3、设置字符集
mysql_set_charset('utf8');

//插入数据
//$result=mysql_query("INSERT INTO others VALUES(NULL ,'张胜',100)");
//var_dump($result);

//更新数据
//$result=mysql_query("update others set money=10 where id=1");
//var_dump($result);

//删除单条数据
//$result=mysql_query("delete from others where id=2");
//var_dump($result);

//删除数据表
//$result=mysql_query("drop table test1");
//var_dump($result);

//查询
$result=mysql_query("select * from others");
//$line=mysql_fetch_row($result);  //返回一个索引数组
//$line=mysql_fetch_assoc($result);   //返回一个关联数组
while($line=mysql_fetch_array($result,MYSQL_ASSOC)){
    $data[]=$line;
} //三个参数,默认MYSQL_BOTH返回关联索引数组,MYSQL_ASSOC返回关联数组,MYSQL_NUM返回索引数组
var_dump($data);

//关闭数据库
@mysql_close($link);

MySQLi面向过程方式操作数据库

  1. 连接数据库
    $connect=mysqli_connect(‘host’,’username’,’password’,’database’);
  2. 执行SQL语句
    $result=mysqli_query($connect,$sql);
  3. 获取结果集
    mysqli_fetch_all($result)

    1
    2
    3
    4
    5
    6
    7
    $conn=mysqli_connect('localhost:6606','root','root','vuldb');
    mysqli_query($conn,'set names utf8');
    $sql='select * from others';
    $result=mysqli_query($conn,$sql);
    $data=mysqli_fetch_all($result,MYSQLI_ASSOC); //MYSQLI_ASSOC返回索引数组
    var_dump($data);
    mysqli_close($conn);

发布者:常山赵子龙,转载请注明出处:https://www.qztxs.com/archives/science/technology/12042

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年6月13日 下午8:17
下一篇 2022年6月13日 下午8:17

相关推荐

  • token的使用

    Token,就是令牌,最大的特点就是随机性,不可预测。一般黑客或软件无法猜测出来,那么,Token有什么作用?又是什么原理呢? Token一般用在两个地方: 防止表单重复提交 anti csrf攻击(跨站点请求伪造)   两者在原理上都是通过session token来实现的。当客户端请求页面时,服务器会生成一个随机数Token,并且将Token放...

    技术 2022年5月27日
    1600
  • Linux基础

    看到什么记什么,没有顺序   Linux各个目录的作用及内容 / /处于Linux文件系统树形结构的最顶端,它是Linux文件系统的入口,所有的目录、文件、设备都在/之下。 /bin 该目录存放着系统最常用的最重要的命令,相当于DOS下的内部命令,只不过它们是以独立的文件形式存在。比如:ls、cp、mkdir等命令。这个目录中的文件都是可执行的并且...

    技术 2022年5月27日
    3600
  • 读服务+写服务分离架构,我坚决反对!

    系统分层架构有一个迭代和演进的过程,早期,系统二层架构如下: (1)上游是业务应用; (2)下游是数据库;   随着架构的演进,可能要抽取出微服务,系统三层架构如下: (1)上游仍是业务应用; (2)中间是微服务层,提供RPC接口; (3)下游是数据库;   大家都知道,数据库可以读写分离,为了职责更清新,架构设计上,服务能否读写分离呢? 如上图,服务化读写...

    2022年5月12日
    2200
  • Redis为什么这么快,底层原理

    我们都知道内存读写是比磁盘读写快很多的。Redis是基于内存存储实现的数据库,相对于数据存在磁盘的数据库,就省去磁盘磁盘I/O的消耗。MySQL等磁盘数据库,需要建立索引来加快查询效率,而Redis数据存放在内存,直接操作内存,所以就很快。

    2022年5月11日
    2400
  • TRS漏洞整理 (转发)

      0x00 前言 TRS北京拓尔思信息技术股份有限公司,其业务系统主要应用于政府、教育、企业等领域,漏洞较多系统有WCM(内容管理系统)、WAS(文本检索系统)、IDS(身份管理系统)。好多客户用到这个,记录一下   0x01 WCM内容管理系统 1.1 WCM5.2~WCM6.5存在SQL注入 首先是这个页面,http://xx.xx...

    技术 2022年5月28日
    12500

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信