当客户端请求PHP文件时,服务器会依次完成解析、执行和输出三个主要步骤。
服务器首先解析PHP代码,将脚本转换为可执行指令。PHP文件以<?php开头,?>结尾。
解析完成后,服务器执行PHP脚本,处理变量、函数和逻辑。执行时,服务器会区分脚本内的代码和服务器环境的变量与函数,确保正确运行。
代码执行结束后,服务器将结果返回给客户端,通常为HTML、JSON、XML或图片等格式。
在PHP中,连接MySQL数据库通常使用mysqli扩展,示例如下:
$username = "用户名";
$password = "密码";
$hostname = "主机名";
$database = "数据库名";
// 创建连接对象
$conn = new mysqli($hostname, $username, $password, $database);
// 检查连接是否成功
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
以上代码通过传入主机名、用户名、密码及数据库名建立连接,连接成功后即可通过 $conn 执行SQL语句。
下面是使用mysqli对象执行简单查询的代码:
$sql = "SELECT * FROM 表名";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// 输出每条记录
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"] . " - Name: " . $row["name"] . "<br>";
}
} else {
echo "没有查询结果";
}
$conn->close();
代码执行查询后遍历结果,逐条输出数据,最后关闭数据库连接。
SQL注入是数据库安全的常见威胁。有效防护措施包括:
下面展示使用PDO防注入的代码示例:
$sql = "SELECT * FROM 表名 WHERE name = :name";
$stmt = $conn->prepare($sql);
$stmt->bindValue(':name', $name);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
var_dump($result);
$conn->close();
通过prepare方法预编译SQL,bindValue绑定参数,可以有效避免恶意SQL注入,保障数据安全。