大学生网络信息中心-运行部
首页
开发文档
项目介绍
加入我们
首页
开发文档
项目介绍
加入我们
  • PHP 教程

🎓 PHP 开发教程

本教程由沈阳农业大学 大学生网络信息中心运行部提供,适用于校园网站开发

第一章:PHP 简介

1.1 PHP 是什么?

PHP,即“PHP: Hypertext Preprocessor”,是一种被广泛应用的开源通用脚本语言,尤其适用于 Web 开发并可嵌入 HTML 中去。它的语法利用了 C、Java 和 Perl,易于学习。该语言的主要目标是允许 web 开发人员快速编写动态生成的 web 页面,但 PHP 的用途远不只于此。

1.2 PHP 的特点是什么?

在服务器上执行。 可免费下载使用。 对初学者而言简单易学。

1.3 PHP 文件是什么?

PHP 文件可包含文本、HTML、JavaScript 代码和 PHP 代码。 PHP 代码在服务器上执行,结果以纯 HTML 形式返回给浏览器。 PHP 文件的默认文件扩展名是 .php。

1.4 PHP 能做什么?

PHP 可以生成动态页面内容。 PHP 可以创建、打开、读取、写入、关闭服务器上的文件。 PHP 可以收集表单数据。 PHP 可以发送和接收 cookies。 PHP 可以添加、删除、修改您的数据库中的数据。 PHP 可以限制用户访问您的网站上的一些页面。 PHP 可以加密数据。

第二章:如何运行 PHP

2.1 如何安装 PHP?

对于初学者建议使用集成的服务器组件,它已经包含了 PHP、Apache、Mysql 等服务,免去了开发人员将时间花费在繁琐的配置环境过程。 推荐使用小皮面板

小皮面板官网:https://www.xp.cn

小皮面板 V8.1 版本:https://www.xp.cn/wenda/401.html

2.2 运行你的第一个 PHP 文件

复制以下代码到 php 文件中:

<?php
echo "Hello, World!";
?>

复制文件路径,例如:C:\phpstudy_pro\WWW\phpCourse\html\file1.php,删除 www 之前部分(含 www),并输入"127.0.0.1"或"localhost",打开浏览器访问。或直接复制相对路径,在路径前输入"127.0.0.1/"或"localhost/",打开浏览器访问。

第三章 PHP 语法

3.1 PHP 标签

PHP 代码必须包含在<?php ?>标签中:

<?php
  // PHP代码
?>

3.2 注释方式

PHP 支持三种注释:

<?php
// 单行注释

# 另一种单行注释

/*
  多行
  注释
*/
?>

3.3 变量与常量

3.3.1 变量声明

PHP 变量以$符号开头:

<?php
$name = "John";      // 字符串变量
$age = 30;           // 整型变量
$height = 1.85;      // 浮点型变量
$isStudent = true;   // 布尔型变量
?>

3.3.2 常量定义

使用define()函数定义常量:

<?php
define("SITE_NAME", "我的网站");
define("MAX_USERS", 100);
?>

3.4 数据类型

PHP 支持 8 种原始数据类型:

类型示例描述
String"Hello"字符串
Integer42整型
Float3.14浮点数
Booleantrue布尔值
Array[1, 2, 3]数组
Objectnew User()对象
Nullnull空值
Resource$file = fopen(...)资源

3.5 运算符

3.5.1 算术运算符

<?php
$a = 10;
$b = 3;

echo $a + $b;  // 13 (加法)
echo $a - $b;  // 7  (减法)
echo $a * $b;  // 30 (乘法)
echo $a / $b;  // 3.333... (除法)
echo $a % $b;  // 1  (取余)
?>

3.5.2 比较运算符

<?php
$a = 5;
$b = "5";

$a == $b   //  (值相等)
$a === $b // (值和类型都相等)
$a != $b  // (值不等)
$a !== $b // (值和类型都不相等)
?>

小练习 1

写一个 BMI 计算器,能够根据输入的身高和体重,计算并输出结果。(BMI 指数=体重(kg)除以身高(m)的平方) 要求:输出结果格式为:您的身高为 xxx,体重为 xxx,BMI 值为:xxx.xx。(使用字符串拼接)

点击查看答案
<?php
$height = "60";//kg
$weight = "170";//cm
$bmi = $weight / ($height/100*$height/100);
echo "您的身高为".$height.",体重为".$weight.",BMI值为:".$bmi;

3.6 流程控制

3.6.1 条件语句

<?php
$score = 85;

if ($score >= 90) {
    echo "优秀";
} elseif ($score >= 80) {
    echo "良好";  // 输出此项
} else {
    echo "继续努力";
}
?>

小练习 2

完善上面的 BMI 计算器,使其能够根据 BMI 数值自动判断是否肥胖,并输出相应的提示信息。参考值:BMI 数值低于 18.5:过轻,18.5-24.9:正常,25-29.9:过重,30-34.9:肥胖,大于 35:严重肥胖。

点击查看答案
<?php
$height = "60";//kg
$weight = "170";//cm
$bmi = $weight / ($height/100*$height/100);
if($bmi < 18.5){
    echo "您的BMI数值".$bmi.",体重过轻";
}elseif($bmi >= 18.5 && $bmi < 25){
    echo "您的BMI数值".$bmi.",体重正常";
}elseif($bmi >= 25 && $bmi < 30){
    echo "您的BMI数值".$bmi.",体重过重";
}elseif($bmi >= 30 && $bmi < 35){
    echo "您的BMI数值".$bmi.",体重肥胖";
}elseif($bmi >= 35){
    echo "您的BMI数值".$bmi.",体重严重肥胖";
}
?>

3.6.2 循环结构

for 循环:

<?php
for ($i = 0; $i < 5; $i++) {
    echo "迭代 #$i<br>";
}
?>

while 循环:

<?php
$count = 3;
while ($count > 0) {
    echo "倒计时: $count<br>";
    $count--;
}
?>

3.7 函数定义

3.7.1 基本函数

<?php
function greet($name) {
    return "你好, $name!";
}

echo greet("康浩焜"); // 输出: 你好, 康浩焜!
?>

3.7.2 带默认值的函数

<?php
function sayHello($name = "徐柏伦") {
    return "你好, $name!";
}

echo sayHello();      // 输出: 你好, 徐柏伦!
echo sayHello("王煜衡"); // 输出: 你好, 王煜衡!
?>

3.8 数组操作

3.8.1 索引数组

<?php
$fruits = ["苹果", "香蕉", "橙子"];
echo $fruits[1]; // 输出: 香蕉
?>

3.8.2 关联数组

<?php
$person = [
    "name" => "嵇欣璇",
    "age" => 19,
    "email" => "jixinxuan@example.com"
];

echo $person["email"]; // 输出: jixinxuan@example.com
?>

3.8.3 数组遍历

<?php
$colors = ["红", "绿", "蓝"];

foreach ($colors as $color) {
    echo "$color ";
}
// 输出: 红 绿 蓝
?>

第四章:PHP Session

PHP Session 的用途

PHP Session 是服务器端的一种技术,用来跟踪用户的状态信息。当用户访问一个网站时,服务器会分配给用户一个唯一的 Session ID,并将此 ID 存储在用户的浏览器中。当用户再次访问该网站时,服务器会通过 Session ID 来识别用户,并取得用户的状态信息。

PHP Session 的主要用途有: 记录用户的登录状态 购物车 游戏分数 保存表单数据

4.2 PHP Session 的使用

<?php
session_start(); // 开启 Session,放在页面最前面

            // 设置 Session 变量
            $_SESSION['user'] = 'admin';
            $_SESSION['password'] = '123456';

            // 读取 Session 变量
            echo $_SESSION['user']; // 输出:admin

            // 销毁 Session 变量
            unset($_SESSION['user']);

            // 关闭 Session
            session_destroy();
?>

4.3 PHP Session 的注意事项:

1.Session 不能跨域,不同域名下的 Session 互不影响。 2.Session 不能持久化,当服务器关闭后,Session 也会被销毁。

安全提示

始终对用户输入进行验证和过滤,防止安全漏洞

第五章:PHP 数据库

5.1 什么是数据库?

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。数据库管理系统(DBMS)是指用来创建、维护和使用数据库的软件。数据库系统是指由数据库、数据库管理系统、数据库管理员、应用程序及相关工具组成的集合。

5.2 MySQL 数据库

MySQL 是最流行的关系型数据库管理系统,它是开源的。MySQL 是一种关系数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下产品。

sql语句:https://www.runoob.com/sql/sql-tutorial.html

PHP MySQL教程:https://www.runoob.com/php/php-mysql-intro.html

5.2.1 MySQL 数据库的连接

在 PHP 中,使用 mysqli 扩展来连接 MySQL 数据库。

<?php  
// 连接 MySQL 数据库    
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检测连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}

// 关闭 mysqli 连接    
$conn->close();
?>  

5.2.2 MySQL 数据库的查询

在 PHP 中,使用SELECT 语句用于从数据表中读取数据:

以下实例中我们从数据库的 MyGuests 表读取了 id, firstname 和 lastname 列的数据并显示在页面上:

<?php  
……
$sql = "SELECT `id`, `firstname`, `lastname` FROM `MyGuests`";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // 输出数据
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
} else {
    echo "0 结果";
}

// 关闭 mysqli 连接
$conn->close();
?>  

5.2.3 MySQL 数据库的插入

在 PHP 中,使用 INSERT INTO 语句向 MySQL 表添加新的记录:

以下实例中我们向 MyGuests 表插入了一条数据:

<?php  
……
$sql = "INSERT INTO `MyGuests` (`firstname`, `lastname`, `email`)
VALUES ('John', 'Doe', 'john@example.com')";
$result = $conn->query($sql);

// 关闭 mysqli 连接
$conn->close();
?>  

5.2.4 MySQL 数据库的更新

在 PHP 中,使用 UPDATE 语句更新 MySQL 表中的数据:

以下实例中我们更新了 MyGuests 表中的某条数据:

<?php  
……
$sql="UPDATE `Persons` SET Age=36
WHERE FirstName='Peter' AND LastName='Griffin'";
$result = $conn->query($sql);

// 关闭 mysqli 连接
mysqli_close($con);
?>  

5.2.5 MySQL 数据库的删除

在 PHP 中,使用 DELETE 语句从 MySQL 表中删除数据:

下面的实例删除 "Persons" 表中所有 LastName='Griffin' 的记录:

<?php  
……
$sql="DELETE FROM `Persons` WHERE `LastName` ='Griffin'";
$result = $conn->query($sql);

// 关闭 mysqli 连接
mysqli_close($con);
?>  

5.3 MySQL 预处理语句

SQL注入

预处理语句对于防止 MySQL 注入是非常有用的 SQL 注入是一种常见的安全漏洞,攻击者通过在应用程序的输入字段中插入恶意的 SQL 代码,从而操纵后端数据库查询,获取、修改或删除数据库中的敏感数据。

预处理语句用于执行多个相同的 SQL 语句,并且执行效率更高

预处理语句的工作原理如下:

1.预处理:创建 SQL 语句模板并发送到数据库。预留的值使用参数 "?" 标记 。例如:

INSERT INTO `MyGuests` (firstname, lastname, email) VALUES(?, ?, ?)

2.数据库解析,编译,对SQL语句模板执行查询优化,并存储结果不输出。

3.执行:最后,将应用绑定的值传递给参数("?" 标记),数据库执行语句。应用可以多次执行语句,如果参数的值不一样。

接下来,让我们来看下 bind_param() 函数:

$stmt = $conn->prepare("INSERT INTO `MyGuests` (firstname, lastname, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);

该函数绑定了 SQL 的参数,且告诉数据库参数的值。 "sss" 参数列处理其余参数的数据类型。s 字符告诉数据库该参数为字符串。

参数有以下四种类型:

  • i - integer(整型)
  • d - double(双精度浮点型)
  • s - string(字符串)
  • b - BLOB(binary large object:二进制大对象)

每个参数都需要指定类型。

通过告诉数据库参数的数据类型,可以降低 SQL 注入的风险。

第六章:PHP JSON


6.1 JSON 是什么?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于 JavaScript 编程语言的一个子集,但是独立于语言。

6.2 PHP 和 JSON

PHP 提供了内置函数来处理 JSON 数据:

  • json_encode() - 对变量进行 JSON 编码
  • json_decode() - 对 JSON 格式的字符串进行解码,转换为 PHP 变量

6.3 编码 JSON

将 PHP 数组或对象转换为 JSON 字符串:

<?php
$data = array(
    "name" => "张三",
    "age" => 25,
    "city" => "北京",
    "hobbies" => array("阅读", "游泳", "编程")
);

$json_string = json_encode($data, JSON_UNESCAPED_UNICODE);
echo $json_string;
?>

输出结果:

{"name":"张三","age":25,"city":"北京","hobbies":["阅读","游泳","编程"]}

注意事项

要注意的是 JSON_UNESCAPED_UNICODE 选项,如果我们不希望中文被编码,可以添加该选项。

6.4 解码 JSON

将 JSON 字符串转换为 PHP 数组或对象:

<?php
$json_string = '{"name":"王五","age":28,"city":"上海"}';

// 转换为关联数组
$array = json_decode($json_string, true);
echo $array["name"]; // 输出:王五

// 转换为对象
$object = json_decode($json_string);
echo $object->name; // 输出:王五
?>

小测试

创建一个基于 MySQL 数据库的学生信息管理

第一步:创建数据库和表

  • 数据库名:student_management
  • 表名:students
  1. id: INT, 主键,自增
  2. student_id: INT(10) 学号,唯一
  3. name: VARCHAR(255) 姓名
  4. age: INT(3) 年龄
  5. major: VARCHAR(255) 专业
  6. grade: INT(3) 成绩
  7. enable: INT,默认,0

第二步:编写PHP代码连接数据库,并使用insert语句添加学生信息

学号姓名年龄专业成绩
001张三20计算机92
002李四21园艺50
003王五19物理85

第三步:运用update语句修改李四的成绩为70,然后用select语句查询所有enable=1的人的成绩,并使用循环语句判断是否都及格,如果都及格,输出“全员及格”,否则输出不及格人数

额外:使用预处理语句

点击查看答案
<?php
//数据库配置
$db_host = 'localhost';
$db_user = 'root';
$db_password = '123456';
$db_name = 'student_management';

//数据库连接
$conn = new mysqli($db_host, $db_user, $db_password, $db_name);
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}

/*不使用预处理*/

//添加学生信息
$sql = "INSERT INTO `students` (student_id, name, age, major, grade, enable) VALUES 
('001', '张三', 20, '计算机', 92, 1),
('002', '李四', 21, '园艺', 50, 1),
('003', '王五', 19, '物理', 85, 1)
";
if (!$conn->query($sql)) {
    die('添加学生信息失败');
}
//修改李四成绩为70
$sql = "UPDATE `students` SET grade = 70 WHERE student_id = '002'";
if (!$conn->query($sql)) {
    die('修改学生信息失败');
}

/*使用预处理*/

//添加学生信息
$sql = "INSERT INTO `students` (student_id, name, age, major, grade, enable) VALUES (?, ?, ?, ?, ?, ?)";
$stmt = $conn->prepare($sql);
$students = [
    ['001', '张三', 20, '计算机', 92, 1],
    ['002', '李四', 21, '园艺', 50, 1],
    ['003', '王五', 19, '物理', 85, 1]
];
foreach ($students as $student) {
    $stmt->bind_param("ssisii", $student[0], $student[1], $student[2], $student[3], $student[4], $student[5]);
}
if (!$stmt->execute()) {
    die('添加学生信息失败');
}

//修改李四成绩为70
$sql = "UPDATE `students` SET grade = ? WHERE student_id = ?";
$stmt = $conn->prepare($sql);
$new_data = [['002', 70]];
$stmt->bind_param("is", $new_data[1], $new_data[0]);
if (!$stmt->execute()) {
    die('修改学生信息失败');
}
$stmt->close();

//查询所有学生成绩
$sql = "SELECT `grade` FROM `students` WHERE enable = 1";
$result = $conn->query($sql);
if (!$result) {
    die('查询学生成绩失败');
}

//判断是否全员及格
$pass = true;
$fail_people = 0;
while ($row = $result->fetch_assoc()) {
    if ($row['grade'] < 60) {
        $pass = false;
        $fail_people++;
    }
}
if ($pass) {
    echo '全员及格';
} else {
    echo '不及格人数:' . $fail_people;
}
$conn->close();

总结

PHP 基础语法要点:

  1. 使用<?php ?>标签包裹代码
  2. 变量以$开头,常量用define()定义
  3. 支持多种数据类型和运算符
  4. 使用流程控制语句实现逻辑
  5. 函数用于封装可重用代码
  6. 数组用于存储多个值
  7. 表单处理需注意安全性
  8. 错误处理机制保障程序健壮性

学习建议

  1. 学会使用搜索引擎,学会科学上网,我们敲代码遇见的问题在网上基本全都有解决办法。
  2. 当下是 AI 的时代,学会使用强大的 AI,学会向 AI 提问,AI 能够给你很多帮助
  3. 善于思考,善于动脑,善于总结。要时刻保持清醒的头脑来敲代码,善于创新,敢于提出自己的想法。
  4. 询问学长学姐,运行部的每一位学长都经验丰富,您的问题相信一定有人能帮你解决!
Prev
phpstudy 教程
Next
HTML 教程