php入门教程(超详细,一篇就够了!!!)

article/2025/8/11 20:42:04

前言

本章节主要学习PHP概念、PHP环境搭建、基本语法、PHP函数、PHP文件管理、PHP操作MySQL数据库等知识点,收录于PHP基础系列。该系列主要讲解PHP相关知识点,欢迎童鞋们互相交流。觉得不错可以三连订阅喔。 

目录

一 概述

二 环境搭建

1. 开发环境

2. 使用小皮面板运行PHP程序

3. 开发工具 

三 语法

1. 创建php文件

2. 格式

3. 注释

4. HelloWord

四 变量

五 数据类型

1. 字符串 

2. 整数

3. 小数(浮点数)

4. 布尔

5. PHP 对象 (Object)

6. null值

六 运算符

1. 算数运算符

2. 赋值运算符

3. 递增递减运算符

4. 比较运算符

5. 逻辑运算符

七 流程控制语句

八 数组

1. 创建数组并读取数据

2. 获取数组长度

3. 遍历数组

九 函数

1. 函数名

2. 参数

3. 返回值

十 PHP文件管理

1. 打开文件

2. 写入文件 

3. 读取文件 

十一 PHP操作mysql数据库 

1. 新增数据

2. 修改数据

3. 删除数据

4. 查询数据

4.1 查询是否成功

4.2 查询所有数据

4.3 登录案例


内容

一 概述

PHP(Hypertext Preprocessor)是一种广泛使用的开源服务器端脚本语言,尤其适用于Web开发。

PHP可以嵌入到HTML中,并与多种数据库集成,最常用的是MySQL。

其灵活性、易学性和强大的社区支持使得PHP成为开发动态网页和Web应用程序的首选语言之一。

PHP代码在服务器上执行,生成的HTML发送到客户端,从而实现网页的动态交互。

学习PHP需要先掌握HTML与CSS基础知识 ,没有基础的同学可以先学习《前端基础系列》:https://blog.csdn.net/weixin_55584739/category_12842027.html

二 环境搭建

1. 开发环境

开始学习之前还需要搭建PHP所需环境:PHP环境,Apache服务器。

对于初学者而言,建议使用集成工具,集成工具中包含了 PHP、Apache服务器、Mysql数据库等服务,免去了繁琐的配置环境过程。

常见的集成工具有很多: WampServer、XAMPP、PHPStudy等,这里推荐使用PHPStudy,下载地址:小皮面板(phpstudy) - 让天下没有难配的服务器环境!

下载安装步骤简单,根据提示安装即可:

2. 运行PHP程序

2.1 启动Apache服务器

2.2 打开根目录

2.3 创建php文件

2.4  打开浏览器,访问php程序即可

访问地址:域名+php程序名

3. 开发工具 

选择一款顺手的开发工具,可以使我们的开发效率大大提升。

常见的PHP开发工具:Eclipse for PHP、PhpStorm、VSCode,建议初学者使用VSCode,轻量化,简单易上手,下载地址:vscode中文网 下载 Visual Studio Code

三 语法

完成以上准备工作,我们就开始正式学习PHP入门知识:基本语法。

1. 创建php文件

PHP 文件的默认文件扩展名是 .php。

PHP 文件可以包含 HTML 标签和一些 PHP 脚本代码。

2. 格式

PHP 脚本可以放在文件中的任何位置。

PHP 脚本以 <?php 开始,以 ?> 结束:

<?php// PHP 代码
?>

3. 注释

<?php// 这是 PHP 单行注释/*这是PHP 多行注释*/
?>

4. HelloWord

<?phpecho "Hello World!";
?>

四 变量

变量是用于程序存储数据的"容器",所有编程语言中都有变量的概念。

语法:$变量名 = 变量值;

由于PHP属于弱类型语言,所以声明变量时不需要设置数据类型,变量的类型取决于值的类型。

注意规范:

        命名需要有一定寓意,例如存储姓名:$name

        遵守驼峰命名法,例如存储姓名:$myName

<?php$a=5;$b=6;$c=$a+$b;echo $c;
?>

五 数据类型

程序中的数据种类繁多,可以根据类型不同,分为几大类:

 String(字符串)

 Integer(整型)

 Float(浮点型)

 Boolean(布尔型)

 Array(数组)

 Object(对象)

 NULL(空值)

 Resour

1. 字符串 

一个字符串是一串字符的序列,就像 "Hello world!"。

可以将任何文本放在单引号和双引号中:

<?php $x = "Hello world!";echo $x;echo "<br>"; $x = 'Hello world!';echo $x;
?>

2. 整数

整数是一个没有小数的数字。

<?php $x = 1359;$x = -345; // 负数 $x = 0x8C; // 十六进制数$x = 047; // 八进制数?>

3. 小数(浮点数)

浮点数是带小数部分的数字,或是指数形式。

 var_dump() 函数返回变量的数据类型和值。

<?php $x = 10.365;var_dump($x);echo "<br>"; $x = 2.4e3;var_dump($x);
?>

4. 布尔

布尔型可以是 TRUE 或 FALSE,TRUE标识真,FALSE标识假。

<?php$x=true;$y=false;
?>

5. PHP 对象 (Object)

对象类型可以用于存储数据,使用class关键字声明类对象,类包含属性和方法。

<?php//类名class Car{//属性var $color;//方法function fun1() {echo "方法1";}}
?>

6. null值

NULL 值表示变量没有值,NULL 是数据类型为 NULL 的值。

<?php$x="Hello world!";$x=null;var_dump($x);
?>

六 运算符

PHP中的运算符与Java运算符基本相同,这里只描述特殊情况,其他相同的运算符可以参考《Java基础系列》中的《Java基础系列-第二章 变量,运算符与数据类型》。

1. 算数运算符

+    -    *    /   %

2. 赋值运算符

=    +=    -=    *=    /=    %=    .=

.= 连接两个字符串   

<?php$a = "Hello";$b = $a . " world!";echo $b; // 输出Hello world! 
?>

3. 递增递减运算符

++x预递增      --x预递减     x++递增     x--递减

4. 比较运算符

>大于   >=大于等于   <小于    <=小于等于   ==相等    ===完全相等     !=非等    === 完全相等

<?php$x=100; $y="100";//=== 判断两边数据的值和类型是否相同var_dump($x === $y);
?>

5. 逻辑运算符

&&与   ||或   !非

七 流程控制语句

流程控制语句用来控制程序的执行流程,分为三种流程结构:

1. 顺序结构

2. 选择结构

3. 循环结构

与Java中的语法相同,参考《Java基础系列》中的《Java基础系列-第三章 流程控制语句》。

八 数组

数组指数据的组合,能够在单个变量中存储多个值。

可以将数组看作一个存储数据的盒子,盒子中有很多个格子,每个格子中都可存储一个数据。

数组名:盒子名

元素:格子中的数据

索引:格子的位置

长度:格子的数量

1. 创建数组并读取数据

通过索引读取数组中的元素 :$数组名[索引];

索引从0开始。即数组中的第一个元素索引为0,以此类推。

<?php$cars=array("Volvo","BMW","Toyota");//通过索引 读取数组中的所有元素  $数组名[索引];echo "$cars[0].$cars[1].$cars[2]";
?>

2. 获取数组长度

count() 函数用于返回数组的长度。

<?php$cars=array("Volvo","BMW","Toyota");echo count($cars);
?>

3. 遍历数组

 遍历指的是读取数组中的所有数据,使用 for 循环:

<?php$cars=array("Volvo","BMW","Toyota");$arrlength=count($cars);for($x=0;$x<$arrlength;$x++){echo $cars[$x];echo "<br>";}
?>

九 函数

函数又称方法,可以将功能代码进行封装,重复使用。

函数语法:function 函数名(参数){  功能代码;  返回值; }

函数中的代码需要经过调用才会执行,不经调用函数无法执行。

1. 函数名

函数的名称

2. 参数

函数中可以使用的变量,调用者在调用时可以向参数中赋值,这个过程叫做参数传递(传参)。

3. 返回值

函数执行后返回给调用者的数据叫做返回值,可以用来传递数据。

<?php// 没有参数,没有返回值的方法
function fun1(){echo "没有参数,没有参会值的方法";
}// 有参数,没有返回值的方法
function fun2($name){echo "有参数,没有返回值的方法,参数是:$name";
}// 有参数,有返回值的方法
function fun3($name){$re = "返回值x";return "有参数,有返回值的方法,返回值是:$re";
}// 调用函数
fun1();fun2("张三");$x = fun3("admin");
echo $x;/* 课堂练习:编写一个计算器方法,调用者传递两个整数,计算器方法计算两个整数的积,并将结果返回给调用者调用者接收数据,并输出到浏览器
*/
?>

十 PHP文件管理

使用php程序操作本地文件:php提供了一些函数,可以打开本地指定文件,给其添加数据、修改数据、删除数据、读取文件中的数据。

1. 打开文件

fopen("文件地址","打开方式");函数用于打开文件

打开方式有多种,分别为:

<?php// 同级目录下创建test.txt文件// 以只读模式打开文件$fp = fopen('test.txt', "r");//var_dump()操作一下$fp看看效果,查看输出结果,提示resourcevar_dump($fp);
?>

2. 写入文件 

fwrite($文件对像,"写入的数据");函数用于写入数据

<?php$filename = 'test.txt';// 打开文件 以写入的形式打开文件$fp= fopen($filename, "w");// 写入文件 $len = fwrite($fp, '模拟数据');// 关闭文件对象fclose($fp);// 打印输出结果print $len .'字节被写入了\n';?>

3. 读取文件 

3.1 fread() 返回所读取的字符串,如果出错返回 FALSE。

<?php$filename = "test.txt";$handle = fopen($filename, "r");//读取二进制文件时,需要将第二个参数设置成'rb'// fread(文件对象,文件长度); 读取文件中的所有数据// 通过filesize(文件对象); 函数获得文件大小,将整个文件一下子读到一个字符串中$contents = fread($handle, filesize ($filename));fclose($handle);
?>

如果读取的文件不是本地普通文件,而是远程文件或者流文件,就不能用以上方法。

因为filesize()函数不能获得这些文件的大小。

所以,需要通过feof()或者fread()的返回值判断是否已经读取到了文件的末尾。

feof()案例:

<?php$handle = fopen('http://www.baidu.com', 'r');$content = '';while(!feof($handle)){$content .= fread($handle, 8080);}echo $content;fclose($handle);
?>

或者:

<?php$handle = fopen('http://www.baidu.com', 'r');$content = '';while(false != ($a = fread($handle, 8080))){//返回false表示已经读取到文件末尾$content .= $a;}echo $content;fclose($handle);
?>

3.2 file读取数据到数组中

array file ( string $filename [, int $use_include_path [, resource $context ]] );

将文件内容读入一个数组中,数组的每一项对应文件中的一行,包括换行符在内。

<?php$a = file('test.txt');foreach($a as $line => $content){echo 'line '.($line + 1).':'.$content;}
?>

十一 PHP操作mysql数据库 

php操作mysql数据库需要使用mysqli库

1. 新增数据

<?php// 连接数据库,添加数据
// 步骤:1.创建连接 $db = new mysqli($数据库地址,$数据库账号,$数据库密码,$数据库名称);
//      2.编写sql语句 $sql = "insert into demo values($id,'$name',$age)";
//      3.执行sql语句 $rs = mysqli_query($db,$sql);
//      4.处理结果  if($rs){ echo "添加成功!";}
//      5.关闭连接对象  mysqli_close($db);$dbservice = "localhost"; //ip地址$dbusername = "root";   //账号$dbpassword = "root";   //密码$dbname = "school";     //数据库名称// 1.创建数据库连接$db = new mysqli($dbservice,$dbusername,$dbpassword,$dbname);//模拟用户数据$id = 1;$name = "tom";$age = 18;// 2.编写sql语句$sql = "insert into demo values($id,'$name',$age)";// 3.执行sql语句  使用mysqli_query(数据库连接对象,sql语句)函数执行sql语句,获得执行结果$rs = mysqli_query($db,$sql);// 4.处理执行结果  判断是否执行成功if($rs){echo "添加成功!";}else{echo "添加失败!";}// 5.关闭连接对象mysqli_close($db);;?>

2. 修改数据

<?php// 修改数据// 创建连接$conn = new mysqli("localhost","root","root","school");// 编写sql语句$sql = "update demo set id=2,name='jar',age=18 where id=1;";// 执行sql语句$rs = mysqli_query($conn,$sql);if($rs){echo "修改成功";}else{echo "修改失败";}// 关闭连接mysqli_close($conn);
?>

3. 删除数据

<?php// 删除数据// 创建连接$conn = new mysqli("localhost","root","root","school");// 编写sql语句$sql = "delete from demo where id=1";// 执行sql语句  得到执行结果$rs = mysqli_query($conn,$sql);// 处理执行结果if($rs){echo "成功";}else{echo "失败";}// 关闭连接mysqli_close($conn);
?>

4. 查询数据

4.1 查询是否成功
<?php// 查询数据$conn = new mysqli("localhost","root","root","school");$sql = "select * from demo";$rs = mysqli_query($conn,$sql);if($rs){echo "查询成功";}else{echo "查询失败";}?>
4.2 查询所有数据
<?php// 查询数据,展示到网页$conn = new mysqli("localhost","root","root","school");$sql = "select * from demo";// 执行sql语句,获得结果集$rs = mysqli_query($conn,$sql);// mysqli_fetch_array(结果集) 用于读取结果集,返回值为数组// 遍历结果集while($row = mysqli_fetch_array($rs)){echo $row['id']. " " .$row['name']. " " .$row['age'];echo "<br>";}?>
4.3 登录案例
<?php// 管理员登录,跳转首页// 获取请求表单中的用户数据$username = $_POST["username"];$password = $_POST["password"];// 创建数据库连接$con = new mysqli("localhost","root","root","crm");// 编写sql$sql = "select * from user where username='$username' and password='$password'";// 执行sql$rs = mysqli_query($con,$sql);// 根据执行结果,跳转页面if($rs){// 登录成功,创建sessio,跳转首页// 开启sessionsession_start();// 将用户数据存入session会话对象$_SESSION["username"] = $username;$_SESSION["password"] = $password;// 跳转echo "<script language='javascript'>alert('登陆成功!');location='welcome.php'</script>";}else{// 登陆失败,跳转登陆页面echo "<script language='javascript'>alert('登陆失败!账号或密码错误,请重新输入。');location='index.html'</script>";}?>

十二 小结 

本文主要学习PHP入门知识、基础语法、操作文件、操作mysql数据库等知识点。

后续持续更新。


http://www.hkcw.cn/article/PMExAVmccr.shtml

相关文章

一文弄懂 YOLOv8网络结构解读 、yolov8.yaml配置文件详细解读与说明、模型训练参数详细解析 通俗易懂!入门必看系列!

看这一篇就够了。本文内含YOLOv8网络结构图 yaml配置文件详细解读与说明 训练教程 训练参数设置参数解析说明等一些有关YOLOv8的内容&#xff01; YOLOv8v10专栏订阅链接&#xff1a;YOLOv10 创新改进高效涨点持续改进300多篇永久免费答疑 &#xff08;订阅的小伙伴&#xf…

php+vue+Laravel+uniapp超市售货管理平台小程序-nodejs-计算机毕业设计

文章目录 具体实现截图本项目支持的技术路线源码获取详细视频演示&#xff1a;文章底部获取博主联系方式&#xff01;&#xff01;&#xff01;&#xff01;本系统开发思路进度安排及各阶段主要任务java类核心代码部分展示主要参考文献&#xff1a;源码获取/详细视频演示 ##项目…

【web渗透】SSRF漏洞超详细讲解

SSRF漏洞 一、原理简介二、漏洞形成的原因三、SSRF和CSRF的区别四、SSRF的攻击方式五、寻找漏洞的方法六、伪协议的介绍 * 1、ftp:// 协议2、Gopher://协议3、Dict:// 协议 七、绕过姿势八、漏洞修复 * 1、防护措施2、最佳防护 九、本章小结 一、原理简介 SSRF(Server-Side R…

【M365运维】Sharepoint文档库无法编辑页面

【问题】 Sharepoint文档库设计开发人员反馈说&#xff0c;文档库页面左上角的“编辑页面”变灰了&#xff0c;无法使用。 另外&#xff0c;如果使用Sharepoint Designer去打开文档库链接&#xff0c;登录时会出现下面的提示。 【解决】 1、启用 Custom Script, 步骤&#xff1…

Spring Boot 整合 RabbitMQ 实现延迟消息

关于 RabbitMQ 消息队列&#xff08;Message Queuing&#xff0c;简写为 MQ&#xff09;最初是为了解决金融行业的特定业务需求而产生的。慢慢的&#xff0c;MQ 被应用到了更多的领域&#xff0c;然而商业 MQ 高昂的价格让很多初创公司望而却步&#xff0c;于是 AMQP&#xff0…

RabbitMQ Java客户端安装与配置指南

RabbitMQ Java客户端安装与配置指南 rabbitmq-java-client RabbitMQ Java client 项目地址: https://gitcode.com/gh_mirrors/ra/rabbitmq-java-client 1. 项目基础介绍 RabbitMQ Java客户端是RabbitMQ消息队列系统的官方Java客户端库。它允许Java应用程序通过AMQP协议…

如何保证RabbitMQ消息的可靠传输?

在这个图中&#xff0c;消息可能丢失的场景是1&#xff0c;2&#xff0c;3 1.在生产者将消息发送给RabbitMQ的时候&#xff0c;消息到底有没有正确的到达服务器呢&#xff0c;RabbitMQ提供了两种解决方案&#xff1a; a. 通过事务机制实现&#xff08;比较消耗性能&#xff0…

RabbitMQ3.9.13与ErLang24.2版本下载资源:消息队列与编程语言的最佳搭档

RabbitMQ3.9.13与ErLang24.2版本下载资源&#xff1a;消息队列与编程语言的最佳搭档 【下载地址】RabbitMQ3.9.13与ErLang24.2版本下载资源 本项目为开发者提供了RabbitMQ 3.9.13和ErLang 24.2的便捷下载资源&#xff0c;旨在简化开发环境搭建流程。资源文件经过精心整理&#…

RabbitMQ 工作模式使用案例之(发布订阅模式、路由模式、通配符模式)

Hi~&#xff01;这里是奋斗的明志&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f331;&#x1f331;个人主页&#xff1a;奋斗的明志 &#x1f331;&#x1f331;所属专栏&#xff1a;RabbitMQ &#x1f4da;本系列文章为个人学…

【RabbitMQ】路由模式和通配符模式的具体实现

文章目录 路由模式创建队列和交换机生产者代码创建交换机声明队列绑定交换机和队列发送消息完整代码 消费者代码运行程序启动生产者启动消费者 通配符模式创建队列和交换机生产者代码创建交换机声明队列绑定交换机和队列发送消息完整代码 消费者代码运行程序启动生产者启动消费…

【RabbitMQ】RabbitMQ配置与交换机学习

文章目录 简介安装和部署1. 安装RabbitMQ2.创建virtual-host3. 添加依赖4.修改配置文件 WorkQueues模型1.编写消息发送测试类2.编写消息接收&#xff08;监听&#xff09;类3. 实现能者多劳 交换机Fanout交换机1.消息发送2.消息监听 Direct交换机1.消息发送2.消息接收 Topic交换…

详解RabbitMQ工作模式之发布订阅模式

目录 发布订阅模式 概念 概念介绍 特点和优势 应用场景 注意事项 代码案例 引入依赖 常量类 编写生产者代码 编写消费者1代码 运行代码 发布订阅模式 概念 RabbitMQ的发布订阅模式&#xff08;Publish/Subscribe&#xff09;是一种消息传递模式&#xff0c;它允许消…

Java操作RabbitMQ

文章目录 Spring集成RabbitMQ1. AMQP&SpringAMQP2. SpringBoot集成RabbitMQ3. 模型work模型 4.交换机Fanout交换机Direct交换机Topic交换机 5.声明式队列和交换机基于API声明基于注解声明 6.消息转换器 Spring集成RabbitMQ 1. AMQP&SpringAMQP AMQP&#xff08;高级消…

女龙队从佛山九江“扒”向世界 农村大妈划出国际范

临近端午,广东多地的河道里又开始热闹起来,特别是佛山地区的龙舟活动历史悠久。九江镇被誉为全国首个龙舟名镇,赛龙舟的传统已有300年历史。九江是典型的水乡,河网密布,几乎每个村子都有河流经过,划船出行是最便捷的交通方式。在村民眼中,龙舟不仅能聚人气,还能增强村里…

同济大学教授路秉杰逝世 建筑学界痛失“中国塔王”

著名建筑历史学家、建筑教育家路秉杰先生因病医治无效,于2025年5月29日在上海逝世,享年90岁。他生前是中国建筑学会史学分会原副理事长,同济大学建筑与城市规划学院教授及博士生导师。路秉杰出生于1935年,山东聊城人。他在中日两国建筑史、园林史以及中国伊斯兰教建筑等领域…

武汉警界科技精英万松因公牺牲 幕后英雄悄然离去

5月27日0时33分,湖北省武汉市公安局科技信息化支队警务技术四级主任万松因公牺牲,享年50岁。两天后的早晨,武昌殡仪馆告别大厅内庄严肃穆,花圈环绕,哀乐低回。他的遗属、生前亲友及同事百余人含泪忍悲,送别这位警界科技精英。5月26日早上7时30分,青年民警王国栋送完孩子…

UniGUI DBGrid 实现多选

设置unidbgrid属性添加多选框 Options —> dgRowSelect、dgCheckSelect、dgMultiSelect —> True 属性完成后&#xff0c;保存运行&#xff0c;unidbgrid前面就会出现多选框&#xff0c;多选时质检选中前面的多选框或者 shift鼠标左键 将两次点击范围内的数据全选 或是 c…

常见位运算总结

位运算 常见位运算总结位1的个数比特位计数汉明距离只出现一次的数字 常见位运算总结 位1的个数 191. 位1的个数 给定一个正整数 n&#xff0c;编写一个函数&#xff0c;获取一个正整数的二进制形式并返回其二进制表达式中 设置位 的个数&#xff08;也被称为汉明重量&#xf…

离散化算法的二分法应用

我们思考一个问题&#xff1a;其实这里的二分法回归本源也是基于下标映射的原理&#xff0c;只是实现是借助二分的形式。 在排序好的数组中对目标数值进行二分搜索&#xff0c;在 O(logn) 的时间复杂度内找到该数值是整体数据中的第几个。 具体的我们可以如下操作&#xff1a; …

字节流操作:InputStream类 读取文件的操作(三种 read 方法)

字节流操作&#xff1a;InputStream类 和 OutputStream类 文章目录 字节流操作&#xff1a;InputStream类 和 OutputStream类观前提醒&#xff1a;InputStream类 读取文件的操作&#xff08;三种 read 方法&#xff09;1. 不带参数的 read( )方法&#xff0c;返回值是&#xff…