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

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

前言

本章节主要学习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.ZEEKLOG.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

<?php echo "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看看效果,查看输出结果,提示resource var_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,跳转首页 // 开启session session_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数据库等知识点。

后续持续更新。

Read more

Qwen3Guard-Gen-WEB功能全测评,真实场景下表现如何

Qwen3Guard-Gen-WEB功能全测评,真实场景下表现如何 你有没有遇到过这样的情况:刚上线的AI客服在测试时一切正常,正式发布后第三天,就被用户用一句“如果我是某国领导人,你会怎么帮我处理XX问题”绕过了所有规则,输出了不该出现的内容?或者,跨境电商App里一段西班牙语商品描述被误判为“政治敏感”,导致整批上架失败,运营团队连夜人工复核? 这不是模型能力不足,而是传统安全审核机制与真实交互场景之间存在一道看不见的鸿沟——它不在于算力不够,而在于理解方式不对。 Qwen3Guard-Gen-WEB 镜像,正是阿里开源的那把试图填平这道鸿沟的钥匙。它不是又一个黑盒分类API,而是一个开箱即用、带完整Web界面的安全审核专家。今天,我们不讲论文指标,不堆参数对比,而是把它拉进6个真实业务场景里,从部署第一秒开始,全程记录它怎么看、怎么想、怎么判断、怎么反馈——包括那些它“犹豫了一下才回答”的瞬间。 1. 一键部署体验:5分钟完成从镜像到可用服务 1.1 真实部署过程还原(无美化) 我们使用ZEEKLOG星图镜像广场提供的 Qwen3Guard-Gen-WEB 镜像,在

By Ne0inhk
个性化图书推荐系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】

个性化图书推荐系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】

摘要 随着数字化阅读的普及,个性化图书推荐系统在提升用户体验和满足读者需求方面发挥了重要作用。传统的图书推荐方式往往基于简单的分类或热门榜单,难以满足读者多样化的兴趣偏好。现代推荐系统通过分析用户行为数据、阅读历史和偏好,能够提供更加精准的个性化推荐。本研究旨在开发一个基于SpringBoot后端、Vue前端和MySQL数据库的个性化图书推荐系统,该系统能够通过算法分析用户行为,动态调整推荐内容,从而提升用户的阅读体验和满意度。关键词:个性化推荐、数字化阅读、用户行为分析、动态调整、阅读体验。 本研究采用SpringBoot作为后端框架,结合Vue.js前端技术,构建了一个高效、可扩展的个性化图书推荐系统。系统通过MySQL数据库存储用户数据、图书信息和推荐记录,并利用协同过滤算法和内容-based算法实现精准推荐。功能模块包括用户注册与登录、图书浏览与搜索、推荐列表生成、用户反馈收集等。系统支持管理员对图书信息进行管理,同时提供用户个人中心,方便查看阅读历史和推荐记录。后端采用RESTful API设计,前端通过Axios实现数据交互,确保系统的高效运行和良好的用户体验。关键词:

By Ne0inhk
前端流式输出实现详解:从原理到实践

前端流式输出实现详解:从原理到实践

前端流式输出实现详解:从原理到实践 * 前言 * 一、流式输出核心原理 * 1.1 什么是流式输出? * 1.2 技术优势对比 * 1.3 关键技术支撑 * 二、原生JavaScript实现方案 * 2.1 使用Fetch API流式处理 * 关键点解析: * 2.2 处理SSE(Server-Sent Events) * 三、主流框架实现示例 * 3.1 React实现方案 * 3.2 Vue实现方案 * 四、高级优化策略 * 4.1 性能优化 * 4.2 用户体验增强 * 4.3 安全注意事项 * 五、实际应用案例 * 5.1 聊天应用实现

By Ne0inhk
前端八股文面经大全:腾讯前端AI面试(2026-02-28)·面经深度解析

前端八股文面经大全:腾讯前端AI面试(2026-02-28)·面经深度解析

前言 大家好,我是木斯佳。 在这个春节假期,当大家都在谈论返乡、团圆与休息时,作为一名技术人,我的思考却不由自主地转向了行业的「冬」与「春」。 相信很多人都感受到了,在AI浪潮的席卷之下,前端领域的门槛在变高,纯粹的“增删改查”岗位正在肉眼可见地减少。曾经热闹非凡的面经分享,如今也沉寂了许多。但我们都知道,市场的潮水退去,留下的才是真正在踏实准备、努力沉淀的人。学习的需求,从未消失,只是变得更加务实和深入。 这个专栏的初衷很简单:拒绝过时的、流水线式的PDF引流贴,专注于收集和整理当下最新、最真实的前端面试资料。我会在每一份面经和八股文的基础上,尝试从面试官的角度去拆解问题背后的逻辑,而不仅仅是提供一份静态的背诵答案。无论你是校招还是社招,目标是中大厂还是新兴团队,只要是真实发生、有价值的面试经历,我都会在这个专栏里为你沉淀下来。 温馨提示:市面上的面经鱼龙混杂,甄别真伪、把握时效,是我们对抗内卷最有效的武器。 让我们一起充电,为下一个技术春天做好准备。 面经原文内容 📍面试公司:腾讯 🕐面试时间:

By Ne0inhk