PHP入门教程5:会话管理和数据库操作

PHP入门教程5:会话管理和数据库操作

在前几篇文章中,我们学习了PHP的基础语法、控制结构、函数的使用、数组和字符串的操作,以及文件处理和表单处理。本文将重点介绍PHP中的会话管理和数据库操作,这是构建动态网站和Web应用程序的重要内容。本文将包含以下几个部分:

  1. 会话管理
  2. 使用Cookies
  3. 数据库基础
  4. 连接数据库
  5. 执行SQL查询
  6. 防止SQL注入

1. 会话管理

会话管理用于在多个页面之间保存用户信息。PHP通过session来管理会话。

启动会话

使用 session_start() 函数启动会话。在使用会话变量之前必须调用该函数。

php 复制代码
<?php
session_start();
$_SESSION["username"] = "小明";
echo "会话已启动,用户名是: " . $_SESSION["username"];
?>
销毁会话

使用 session_destroy() 函数销毁会话。

php 复制代码
<?php
session_start();
session_destroy();
echo "会话已销毁";
?>

2. 使用Cookies

Cookies用于在客户端保存少量数据。PHP通过 setcookie() 函数设置Cookie。

设置Cookie
php 复制代码
<?php
setcookie("username", "小明", time() + (86400 * 30), "/"); // 86400 = 1 天
echo "Cookie 已设置";
?>
读取Cookie
php 复制代码
<?php
if (isset($_COOKIE["username"])) {
    echo "用户名是: " . $_COOKIE["username"];
} else {
    echo "未设置Cookie";
}
?>
删除Cookie
php 复制代码
<?php
setcookie("username", "", time() - 3600, "/");
echo "Cookie 已删除";
?>

3. 数据库基础

PHP通常与MySQL数据库一起使用。我们需要以下几个步骤来操作数据库:

  1. 连接数据库
  2. 选择数据库
  3. 执行SQL查询
  4. 获取查询结果
  5. 关闭数据库连接

4. 连接数据库

使用 mysqli_connect() 函数连接数据库。

php 复制代码
<?php
$servername = "localhost";
$username = "用户名";
$password = "密码";
$dbname = "数据库名";

// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);

// 检测连接
if (!$conn) {
    die("连接失败: " . mysqli_connect_error());
}
echo "连接成功";
?>

5. 执行SQL查询

执行SQL查询需要使用 mysqli_query() 函数。

插入数据
php 复制代码
<?php
$sql = "INSERT INTO Students (name, age) VALUES ('小明', 20)";

if (mysqli_query($conn, $sql)) {
    echo "新记录插入成功";
} else {
    echo "错误: " . $sql . "<br>" . mysqli_error($conn);
}
?>
查询数据
php 复制代码
<?php
$sql = "SELECT id, name, age FROM Students";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    while($row = mysqli_fetch_assoc($result)) {
        echo "id: " . $row["id"]. " - 姓名: " . $row["name"]. " - 年龄: " . $row["age"]. "<br>";
    }
} else {
    echo "0 结果";
}
?>
更新数据
php 复制代码
<?php
$sql = "UPDATE Students SET age=21 WHERE name='小明'";

if (mysqli_query($conn, $sql)) {
    echo "记录更新成功";
} else {
    echo "错误: " . $sql . "<br>" . mysqli_error($conn);
}
?>
删除数据
php 复制代码
<?php
$sql = "DELETE FROM Students WHERE name='小明'";

if (mysqli_query($conn, $sql)) {
    echo "记录删除成功";
} else {
    echo "错误: " . $sql . "<br>" . mysqli_error($conn);
}
?>

6. 防止SQL注入

SQL注入是通过将恶意SQL代码插入SQL查询字符串中来攻击数据库的一种方式。防止SQL注入的方法是使用准备语句和参数化查询。

使用准备语句
php 复制代码
<?php
$stmt = $conn->prepare("INSERT INTO Students (name, age) VALUES (?, ?)");
$stmt->bind_param("si", $name, $age);

// 设置参数并执行
$name = "小明";
$age = 20;
$stmt->execute();

echo "新记录插入成功";

$stmt->close();
$conn->close();
?>

小结

在这篇文章中,我们学习了PHP中的会话管理和数据库操作,包括启动和销毁会话、设置和读取Cookies、连接数据库、执行SQL查询以及防止SQL注入的方法。这些内容是构建动态Web应用程序的核心。在下一篇文章中,我们将探讨PHP中的面向对象编程(OOP)。希望你能通过这个系列文章,逐步掌握PHP编程,并能应用于实际项目中。

相关推荐
LUCIAZZZ11 分钟前
HikariCP数据库连接池原理解析
java·jvm·数据库·spring·springboot·线程池·连接池
我在北京coding27 分钟前
300道GaussDB(WMS)题目及答案。
数据库·gaussdb
小Tomkk40 分钟前
阿里云 RDS mysql 5.7 怎么 添加白名单 并链接数据库
数据库·mysql·阿里云
明月醉窗台1 小时前
qt使用笔记二:main.cpp详解
数据库·笔记·qt
duwei_wang2 小时前
[Android]-Admob配置过多导致的慢消息
android
沉到海底去吧Go2 小时前
【图片自动识别改名】识别图片中的文字并批量改名的工具,根据文字对图片批量改名,基于QT和腾讯OCR识别的实现方案
数据库·qt·ocr·图片识别自动改名·图片区域识别改名·pdf识别改名
老纪的技术唠嗑局2 小时前
重剑无锋,大巧不工 —— OceanBase 中的 Nest Loop Join 使用技巧分享
数据库·sql
雨白3 小时前
发送自定义广播
android
未来之窗软件服务3 小时前
JAVASCRIPT 前端数据库-V6--仙盟数据库架构-—-—仙盟创梦IDE
数据库·数据库架构·仙盟创梦ide·东方仙盟·东方仙盟数据库
冰橙子id3 小时前
centos7编译安装LNMP架构
mysql·nginx·架构·centos·php