IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> php基础语法 -> 正文阅读

[PHP知识库]php基础语法

注:该文章为本人笔记,难免有差错,不喜勿喷,欢迎大佬指正、指导。

一、php基础语法

1.输出语法:

echo 你要输出的内容

print_r(你要输出的内容)

var_dump(你要输出的内容)

三种输出语法的区别:

echo:

只能输出基本数据类型,输出true,会转换成1,false会转换成 空 ,输出复杂数据类型会报错

  •  ? ?$str='hello world';
     ? ?$num =100;
     ? ?$arr = [1,2,3];
     ? ?$b1 =true;
     ? ?$b2=false;
    ?
     ? ?echo $num;
     ? ?echo '</br>';
     ? ?echo $str;
     ? ?echo '</br>';
     ? ?echo $arr;//没办法转换字符串
     ? ?echo '</br>';
     ? ?echo $b1;
     ? ?echo '</br>';
     ? ?echo $b2;
     ? ?echo '</br>';

    执行结果?

    100
    hello world
     ? ? //没办法转换字符串
    Notice: Array to string conversion in G:\phpstudy\WWW\jichuyufa.php on line 46
    Array
    1
     ? ?//false 转换成 空

print_r()

  • 输出true,会转换成1,false会转换成 空 ,所有数据类型都能输出

  •  ? ?$str='hello world';
     ? ?$num =100;
     ? ?$arr = [1,2,3];
     ? ?$b1 =true;
     ? ?$b2=false;
     ? ?print_r($num);
     ? ?print_r($str);
     ? ?print_r($arr);
     ? ?print_r($b1);
     ? ?print_r($b2);

    执行结果??

    100hello worldArray ( [0] => 1 [1] => 2 [2] => 3 ) 1
     ? ?//false 转换成 空

var_dump()

  • 可以输出所有数据类型

  • 每一个数据类型在输出的时候都会有详细信息输出

  •  ? ?$str='hello world';
     ? ?$num =100.234;
     ? ?$arr = [1,2,3];
     ? ?$b1 =true;
     ? ?$b2=false;
     ? ?var_dump($num);
     ? ?echo '</br>';
     ? ?var_dump($str);
     ? ?echo '</br>';
     ? ?var_dump($arr);
     ? ?echo '</br>';
     ? ?var_dump($b1);
     ? ?echo '</br>';
     ? ?var_dump($b2);

    执行结果??

    float(100.234)
    string(11) "hello world"
    array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
    bool(true)
    bool(false)

2.解决中文乱码

+当你在php输出中文内容的时候,会出现中文乱码

+原因:没有告诉浏览器输出内容用什么字符集来解析

+告诉浏览器一些事情,我们使用header()

 ?header('content-type: text/html;charset=utf-8;');

3.字符串

3.1php里面字符串分成两种

+单引号:普通字符串

+双引号:特殊字符串(可以直接解析变量)

 ? ?$age = 18;
 ? ?$str='你好,我今年 $age 岁了';
 ? ?$str2="你好,我今年 $age 岁了";
 ? ?echo $str;
 ? ?echo '</br>';
 ? ?echo $str2;

执行结果??

你好,我今年 $age 岁了
你好,我今年 18 岁了

3.2字符串拼接

+php 里面加号(+)只有一个作用,就是数学运算

+拼接字符串使用 点(.)

    $str3 =$str . '---' .$str2;
    echo '</br>';
    echo $str3;

执行结果??

你好,我今年 $age 岁了---你好,我今年 18 岁了

4.流程控制语句

=> if ( ) { }

    for ($i = 0; $i < 10; $i++) {
        echo $i . '----</br>';
    }

=> switch ( ) { }

=> for ( ) { }

=> while ( ) { }

=>do {...} while ( )

5.数组:

5.1.索引型数组

  • $arr = array(数组1,数组2,...)

  • 等价于 js里面 [数据1,数据2,数据3...]

        $arr = array('hello','world');
    	$arr = ['hello','world'];
    	//以上两种结果一样
        print_r($arr);

执行结果??

Array ( [0] => hello [1] => world )

5.2.关联型数组

  • $arr = array( key => value,key2 = >value2,...)

  • 按照键值对排列,等价于js里面的{ key:value,key2:value2,... }

 ? ?$arr = array(
 ? ? ? ?"name" => "jack",//注意,这里用的是逗号
 ? ? ? ?"age" => 18
 ?  );
 ? ?print_r($arr);

执行结果??

Array ( [name] => jack [age] => 18 )

访问数组里面的成员

  • 一种语法

  • 数组名[索引]

  • 数组名[key]

 ? ?echo '</br>';
 ? ?echo $arr["name"];
 ? ?echo '</br>';
 ? ?echo $arr["age"];

执行结果??

jack
18

二、php操作mysql数据库流程

数据库:关系型数据库,非关系型数据库

mysql数据库:

  • 关系型数据库

  • 存储数据的"仓库"(磁盘:d盘,e盘)

  • 由很多的database(库),理解为文件夹

  • 一个网站的内容放在一个库里面

  • 每一个库由多个表组成,理解为一个文件

  • 表由字段(表头)和数据组成

1.和数据库建立连接

  • 语法:$link = mysqli_connect('IP','数据库用户名','数据库密码','你要操作哪一个库')

  • IP:你要访问的数据库所在的电脑的IP地址,本机 localhost 或者 127.0.0.1

  • 用户名:phpstudy 默认是 root

  • 密码: phpstudy 默认是 root

  • database:选择一个你要操作的库

  • 返回值:一个连接信息

  • $link = mysqli_connect('localhost','root','root','student');
    print_r($link);

    执行结果??

    mysqli Object ( [affected_rows] => 0 [client_info] => mysqlnd 5.0.10 - 20111026 - $Id: c85105d7c6f7d70d609bb4c000257868a40840ab $ [client_version] => 50010 [connect_errno] => 0 [connect_error] => [errno] => 0 [error] => [error_list] => Array ( ) [field_count] => 0 [host_info] => localhost via TCP/IP [info] => [insert_id] => 0 [server_info] => 5.5.53 [server_version] => 50553 [stat] => Uptime: 12010 Threads: 2 Questions: 54 Slow queries: 0 Opens: 85 Flush tables: 1 Open tables: 3 Queries per second avg: 0.004 [sqlstate] => 00000 [protocol_version] => 10 [thread_id] => 3 [warning_count] => 0 )

2.执行sql语句操作数据库了

  • sql语句是操作 MySQL 数据库的唯一方法(增删改查都是使用一个方法,只是不同的sql语句)

  • 简单的sql语句:'SELECT * FROM    `表名`',查询数据库所有数据
  • 语法:$res = mysqli_query(数据库连接信息,要执行的sql语句)

  • 返回值:sql语句的执行结果

  • $link = mysqli_connect('localhost','root','root','student');
    $sql = 'SELECT * FROM`student`';
    $res = mysqli_query($link,$sql);
    print_r($res);

    执行结果??

    mysqli_result Object ( [current_field] => 0 [field_count] => 6 [lengths] => [num_rows] => 1024 [type] => 0 )

3.解析查询结果

  • 注意:只有查询的sql语句需要解析(增删改不需要解析)

  • 语法:$data = mysqli_fetch_all(要解析的数据,解析的数据格式)

  • 要解析的数据,mysqli_query 的返回值

  • 解析的数据格式,MYSQLI_ASSOC,解析成关联型数组

  • header('content-type: text/html;charset=utf-8;');
    $link = mysqli_connect('localhost','root','root','student');
    // print_r($link);
    $sql = 'SELECT * FROM`student`';
    $res = mysqli_query($link,$sql);
    print_r($res);
    $data = mysqli_fetch_all($res,MYSQLI_ASSOC);
    //print_r($data);
    echo json_encode($data);

4.php的json格式

  • php的数据格式转换成json格式字符串

  • json_encode(php数据格式)

  • json格式字符串转换成php的数据格式

  • json_decode(json格式字符串)

$arr =["hello" =>"world","name" =>"Jack"];

print_r($arr);

$jsonStr = json_encode($arr);

echo '</br>';

echo $jsonStr;

执行结果??

Array ( [hello] => world [name] => Jack )
{"hello":"world","name":"Jack"}

5.sql语句

  • 操作MySQL 数据库的唯一方法

  • 书写sql语句的规范:

    • 关键字建议大写 'SELECT'

    • 字段名 和 表名 建议用反引号包裹

        '`student`'
    • 当使用一个值的时候

    • 字符串类型,需要使用引号单独包裹

      '`name`="张三"'
      "`name`=\"张三\""

5.1.查询所有

  • 'SELECT * FROM `表`'
//查询数据库流程

//查询所有
$sql = 'SELECT * FROM `student`';

//1.建立连接
$link = mysqli_connect('127.0.0.1','root','root','student');
//2.执行sql语句
$res = mysqli_query($link,$sql);
//3.解析结果(因为是查询)
$data = mysqli_fetch_all($res,MYSQLI_ASSOC);
echo json_encode($data);

5.2.查询所有数据,但是只要几个字段

SELECT 字段1,字段2,...FROM `表`
//查询所有数据,但是只要几个字段
$sql = 'SELECT `name`,`age` FROM `student`';
$link = mysqli_connect('127.0.0.1','root','root','student');
//2.执行sql语句
$res = mysqli_query($link,$sql);
//3.解析结果(因为是查询)
$data = mysqli_fetch_all($res,MYSQLI_ASSOC);
echo json_encode($data);

5.3.WHERE关键字

按照条件查询

$sql = 'SELECT * FROM `student` WHERE `age`=28';
$sql = 'SELECT `score`,`age` FROM `student` WHERE `score`>90 AND `age`>25';

OR关键字

SELECT * FROM `student` WHERE 条件1 OR 条件2 

LIMIT分页查询

SELECT * FROM `student` LIMIT 开始索引,多少个

ORDER BY 排序

SELECT * FROM `student` ORDER BY `字段` DESC //降序
SELECT * FROM `student` ORDER BY `字段` ASC  //升序

LIKE % 模糊查询

SELECT * FROM `student` WHERE `name` LIKE '三%' //必须是三xxx
SELECT * FROM `student` WHERE `name` LIKE '%三' //必须是xxx三
SELECT * FROM `student` WHERE `name` LIKE '%三%' //包含三即可

LIKE _ 模糊查询

一个_ 只能表示一位

SELECT * `studnet` WHERE `name` LIKE '_三_' //必须是x三x(三位)
SELECT * `studnet` WHERE `name` LIKE '__三' //必须是x三(三位)
SELECT * `studnet` WHERE `name` LIKE '三_' //必须是三x(两位)

聚合函数

在查询的时候直接计算出一些内容

count() 统计数字

SELECT count(*) 别名 FROM `student` 
"别名":"1024"
SELECT count(*) c FROM `student` 
"c":"1024"

avg() 求平均值

$sql = SELECT avg(哪一个字段) 别名 FROM `student`
$sql = SELECT avg('score') c FROM `student`

max() 最大值

min() 最小值

$sql = SELECT max(哪一个字段) 别名 FROM `student`
$sql = SELECT min(哪一个字段) 别名 FROM `student`

综合

$sql = SELECT count(*) c, min(`score`) min, avg(`score`) a, max(`score`) max FROM `student`;

6.增删改的sql语句,插入的sql语句

6.1.按照字段全部插入

INSERT INTO student VALUES(按字段顺序书写,如按表里的顺序从左开始:id,name,age,gender,class,score)

$sql = 'INSERT INTO `student` VALUES(1025,'郭翔',18,'男')';

在插入的时候,主键可以不写,写一个null(主键:id)

6.2.选取字段插入

$sql = 'INSERT INTO `student` (`字段1`,`字段2`...) VALUES(NULL,'郭翔'...)';

注:前后括号的内容需要配上套

6.6.3.删除的语句

DELETE FROM student WHERE 条件

$sql = 'DELETE FROM `student` WHERE `id`=1023';
//将id为1023的删除掉

6.4.修改的sql语句

修改一条数据

UPDATE `student` SET 要修改的字段=要修改的值 WHERE 条件
$sql = 'UPDATE `student` SET `gender`="女" WHERE `id`>1024';

三、浏览器与后端交互

form标签,一个表单标签

有自动提交功能

action:提交到哪一个地址(哪一个php文件)

button 标签对:等价于submit按钮,点击的时候会自动提交

input

form表单的自动提交

只会提交有name属性的表单

name的值作为key

=>表单的value作为value

php接收前端发来的内容

  • php有一份天生的关联型数组叫 $_GET

  • 所有从地址栏带过来的参数信息,都自动存储在里面

  • $username = $_GET['username'];
    $password = $_GET['password'];

使用前端发来的内容去数据库查询

  • $link = mysqli_connec

返回结果给前端,登录成功,登录失败

<?php
// print_r($_GET);
// $username = $_GET['username'];
// $password = $_GET['password'];

$link = mysqli_connect('localhost','root','root','student');
$sql = "SELECT count(*) c FROM `demo1` WHERE `username`='guo' AND `password`='123'";
$res = mysqli_query($link,$sql);
//只要这里上面不得到false或者 不报错,就表示登录成功了
//只能表示你执行sql语句成功了,终于是否针对查询到了数据了,得解析看着
//方案1:结果解析完毕,查看的关联型数组的length
// $data = mysql_fetch_all($res,MYSQLI_ASSOC);
//通过数组的length决定是否登录成功
//语法:count(数组),返回值:这个数组的length
//print_r(count($data));



//方案2:修改sql语句,只要能查到数据,表示成功
//解析结果,直接能得到一个关联型数组,里面只有一个数据c
$data = mysqli_fetch_all($res,MYSQLI_ASSOC);
print_r($data);
?>

<?php
// print_r($_GET);
$username = $_GET['username'];
$password = $_GET['password'];

header('content-type:text/html;charset=utf-8;');

$link = mysqli_connect('localhost','root','root','student');
$sql = "SELECT *  FROM `demo1` WHERE `username`='$username' AND `password`='$password'";
$res = mysqli_query($link,$sql);
//只要这里上面不得到false或者 不报错,就表示登录成功了
//只能表示你执行sql语句成功了,终于是否针对查询到了数据了,得解析看着
//方案1:结果解析完毕,查看的关联型数组的length
$data = mysqli_fetch_all($res,MYSQLI_ASSOC);

//通过数组的length决定是否登录成功
//语法:count(数组),返回值:这个数组的length
//print_r(count($data));



//方案2:修改sql语句,只要能查到数据,表示成功
//解析结果,直接能得到一个关联型数组,里面只有一个数据c
// $data = mysqli_fetch_all($res,MYSQLI_ASSOC);
// print_r($data);
//3.返回结果给前端,登录成功,登录失败
if(count($data)){
    //表示有数据,登录成功
    //暂时使用php操作一下浏览器
    //告诉浏览器,把你的地址栏写成home.html
    header('location:./home.html');
} else{
    echo '用户名密码错误!';
    echo '<button><a href="./P239 简单的登录案例.html">返回登录页</a></button>';
}

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-07-22 13:54:33  更:2021-07-22 13:55:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/5 20:34:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码