Skip to content

新手易错点清单

语法错误

1. 缺少分号

错误示例

php
<?php
echo "Hello World"
$name = "John" // 缺少分号
?>

正确示例

php
<?php
echo "Hello World";
$name = "John"; // 添加分号
?>

2. 括号不匹配

错误示例

php
<?php
if ($name == "John" {
    echo "Hello John";
} // 缺少右括号
?>

正确示例

php
<?php
if ($name == "John") {
    echo "Hello John";
} // 添加右括号
?>

3. 引号使用错误

错误示例

php
<?php
echo 'Hello World';
echo 'It's a beautiful day'; // 单引号内使用单引号
?>

正确示例

php
<?php
echo 'Hello World';
echo "It's a beautiful day"; // 使用双引号
// 或
echo 'It\'s a beautiful day'; // 转义单引号
?>

变量和类型

1. 变量未定义

错误示例

php
<?php
echo $name; // 变量未定义
?>

正确示例

php
<?php
$name = "John";
echo $name; // 先定义变量
?>

2. 变量作用域错误

错误示例

php
<?php
function test() {
    $name = "John";
}
test();
echo $name; // 无法访问函数内的变量
?>

正确示例

php
<?php
$name = "John";
function test() {
    global $name;
    echo $name;
}
test();
?>

3. 类型转换错误

错误示例

php
<?php
$num = "123";
$sum = $num + 1; // 字符串与数字相加
?>

正确示例

php
<?php
$num = "123";
$sum = (int)$num + 1; // 显式类型转换
?>

表单处理

1. 未检查表单提交

错误示例

php
<?php
$name = $_POST['name']; // 直接访问 POST 数据
?>

正确示例

php
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $name = isset($_POST['name']) ? $_POST['name'] : '';
}
?>

2. 未验证用户输入

错误示例

php
<?php
$name = $_POST['name'];
echo "Hello, $name";
?>

正确示例

php
<?php
$name = isset($_POST['name']) ? $_POST['name'] : '';
if (empty($name)) {
    echo "请输入姓名";
} else {
    echo "Hello, " . htmlspecialchars($name);
}
?>

3. 文件上传错误

错误示例

php
<?php
$file = $_FILES['file'];
move_uploaded_file($file['tmp_name'], 'uploads/' . $file['name']); // 未检查上传错误
?>

正确示例

php
<?php
if (isset($_FILES['file']) && $_FILES['file']['error'] === UPLOAD_ERR_OK) {
    $file = $_FILES['file'];
    move_uploaded_file($file['tmp_name'], 'uploads/' . $file['name']);
} else {
    echo "文件上传失败";
}
?>

数据库操作

1. SQL 注入

错误示例

php
<?php
$name = $_POST['name'];
$sql = "SELECT * FROM users WHERE name = '$name'";
$result = mysqli_query($conn, $sql); // 存在 SQL 注入风险
?>

正确示例

php
<?php
$name = $_POST['name'];
$sql = "SELECT * FROM users WHERE name = ?";
$stmt = mysqli_prepare($conn, $sql);
mysqli_stmt_bind_param($stmt, "s", $name);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
?>

2. 数据库连接错误

错误示例

php
<?php
$conn = mysqli_connect('localhost', 'root', '', 'myDB'); // 未检查连接错误
?>

正确示例

php
<?php
$conn = mysqli_connect('localhost', 'root', '', 'myDB');
if (!$conn) {
    die("连接失败: " . mysqli_connect_error());
}
?>

3. 未关闭数据库连接

错误示例

php
<?php
$conn = mysqli_connect('localhost', 'root', '', 'myDB');
// 数据库操作
// 未关闭连接
?>

正确示例

php
<?php
$conn = mysqli_connect('localhost', 'root', '', 'myDB');
// 数据库操作
mysqli_close($conn); // 关闭连接
?>

1. 未启动会话

错误示例

php
<?php
$_SESSION['name'] = "John"; // 未启动会话
?>

正确示例

php
<?php
session_start(); // 启动会话
$_SESSION['name'] = "John";
?>

错误示例

php
<?php
setcookie('name', 'John'); // 未设置过期时间
?>

正确示例

php
<?php
setcookie('name', 'John', time() + 3600); // 设置过期时间
?>

文件操作

1. 路径错误

错误示例

php
<?php
$file = fopen('file.txt', 'r'); // 相对路径可能导致错误
?>

正确示例

php
<?php
$file = fopen(__DIR__ . '/file.txt', 'r'); // 使用绝对路径
?>

2. 未检查文件是否存在

错误示例

php
<?php
$content = file_get_contents('file.txt'); // 未检查文件是否存在
?>

正确示例

php
<?php
if (file_exists('file.txt')) {
    $content = file_get_contents('file.txt');
} else {
    echo "文件不存在";
}
?>

3. 未关闭文件指针

错误示例

php
<?php
$file = fopen('file.txt', 'r');
// 文件操作
// 未关闭文件指针
?>

正确示例

php
<?php
$file = fopen('file.txt', 'r');
// 文件操作
fclose($file); // 关闭文件指针
?>

安全问题

1. 密码存储不安全

错误示例

php
<?php
$password = $_POST['password'];
// 直接存储密码
?>

正确示例

php
<?php
$password = $_POST['password'];
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
// 存储哈希后的密码
?>

2. XSS 攻击

错误示例

php
<?php
$name = $_POST['name'];
echo "Hello, $name";
?>

正确示例

php
<?php
$name = $_POST['name'];
echo "Hello, " . htmlspecialchars($name);
?>

3. CSRF 攻击

错误示例

php
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // 直接处理表单数据
}
?>

正确示例

php
<?php
session_start();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if ($_POST['csrf_token'] !== $_SESSION['csrf_token']) {
        die('CSRF 攻击检测');
    }
    // 处理表单数据
}
?>

其他常见错误

1. 大小写敏感

错误示例

php
<?php
$Name = "John";
echo $name; // 变量名大小写敏感
?>

正确示例

php
<?php
$name = "John";
echo $name; // 变量名保持一致
?>

2. 函数名错误

错误示例

php
<?php
$arr = array(1, 2, 3);
echo lenght($arr); // 函数名错误
?>

正确示例

php
<?php
$arr = array(1, 2, 3);
echo count($arr); // 正确的函数名
?>

3. 路径分隔符错误

错误示例

php
<?php
$path = 'C:\xampp\htdocs\project'; // 路径分隔符错误
?>

正确示例

php
<?php
$path = 'C:/xampp/htdocs/project'; // 使用正斜杠
// 或
$path = 'C:\\xampp\\htdocs\\project'; // 转义反斜杠
?>

总结

本文列出了 PHP 新手常见的错误,包括语法错误、变量和类型错误、表单处理错误、数据库操作错误、会话和 Cookie 错误、文件操作错误、安全问题和其他常见错误。通过了解这些错误并学习正确的写法,你可以避免在开发过程中犯同样的错误,提高代码质量和安全性。

在学习 PHP 的过程中,应该注意以下几点:

  • 仔细检查语法,确保代码符合 PHP 语法规范
  • 正确处理变量和类型,避免类型转换错误
  • 对用户输入进行验证和过滤,防止安全问题
  • 正确操作数据库,防止 SQL 注入
  • 合理使用会话和 Cookie
  • 安全处理文件操作
  • 遵循最佳实践和编码规范

通过不断学习和实践,你可以逐渐掌握 PHP 开发技巧,减少错误的发生,提高开发效率。

© 2026 编程马·菜鸟教程 版权所有