| 项目 | 语法 |
|---|---|
| 标签 | <?php ... ?> 或短标签 <? ... ?>(需开启) |
| 引用文件 | require(前置加载)、include(运行时加载) |
| 注释 | // # 单行,/* */ 多行 |
| 变量 | $var 开头,语句以 ; 结尾 |
| 字符串连接 | .(点号),非 + |
| 输出 | echo、print、<?= $var ?> |
<?php
// if-elseif-else
if ($a > $b) { echo 'a>b'; }
elseif ($a == $b) { echo 'a=b'; }
else { echo 'a
3. 数据库操作 (MySQLi 面向对象)
<?php
$mysqli = new MySQLi('127.0.0.1', 'root', '', 'shop');
$mysqli->set_charset('utf8mb4');
// 查询
$res = $mysqli->query('SELECT * FROM user');
while ($row = $res->fetch_object()) {
echo $row->username . '
';
}
// 增删改
$mysqli->query("INSERT INTO user (name) VALUES ('test')");
$mysqli->query("UPDATE user SET name='new' WHERE id=1");
$mysqli->query("DELETE FROM user WHERE id=2");
?>
4. 表单与超全局变量
$_GET['key']、$_POST['key']、$_REQUEST['key']
- 上传表单需
enctype="multipart/form-data" + <input type="file">
5. Session 会话
<?php
session_start();
$_SESSION['user'] = 'admin'; // 写
echo $_SESSION['user']; // 读
unset($_SESSION['user']); // 删单个
session_destroy(); // 销毁整个会话
?>
6. 分页核心逻辑
<?php
$page = max(1, (int)($_GET['page'] ?? 1));
$pageSize = 10;
$total = $mysqli->query('SELECT COUNT(*) FROM article')->fetch_row()[0];
$totalPages = ceil($total / $pageSize);
$page = min($page, $totalPages);
$offset = ($page - 1) * $pageSize;
$res = $mysqli->query("SELECT * FROM article LIMIT $offset, $pageSize");
// 页码链接:?page=1, ?page==$page-1?>, ?page==$page+1?>, ?page==$totalPages?>
?>
7. 文件上传
<?php
$f = $_FILES['file'];
$dest = 'uploads/' . date('Ymd') . '_' . $f['name'];
move_uploaded_file($f['tmp_name'], $dest);
chmod($dest, 0755);
?>
8. 邮件发送
<?php
mail('to@example.com', 'Subject', 'Body', "From: from@example.com\r\nReply-To: from@example.com");
?>
需服务器配置 sendmail_path 或 SMTP(Windows 下 php.ini 配置 SMTP/smtp_port)。
9. 常见调试技巧
echo $sql; exit; 复制到 phpMyAdmin 执行var_dump($_POST) 检查表单 name/idskip-networking