主要结构
PHP
<?php
// 这段代码展示了如何使用PDO(PHP Data Objects)扩展来连接到MySQL数据库。
// PDO提供了一个数据访问抽象层,这意呀着,无论使用什么数据库,你都可以通过统一的函数来查询和获取数据。
// 假设你已经有了服务器上的配置信息,这些配置信息(如数据库用户名、密码等)应该通过安全的方式获取,
// 而不是直接从外部输入(如用户提交的表单)中获取,以避免安全风险,如SQL注入等。
// 数据库连接信息
$host = Host; // 数据库服务器地址,可自行修改为:localhost、127.0.0.1、本地IP或服务器IP
$charset = 'utf8mb4'; // 字符集,推荐使用utf8mb4以支持更广泛的Unicode字符,包括emoji等
$user = Account; // 数据库用户名 自行修改
$password = Password; // 数据库密码 自行修改
$db_name = Databases; // 数据库名称 自行修改
$port = PORT; // 数据库端口 自行修改
// 创建PDO实例的DSN(数据源名称)
// DSN描述了如何连接到数据库服务器,包括协议、主机名、端口、数据库名和字符集等
$dsn = "mysql:host=$host;port=$port;dbname=$db_name;charset=$charset";
// PDO选项数组,用于设置PDO对象的行为
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // 错误模式设置为异常,这样当PDO遇到错误时,会抛出PDOException异常
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // 设置默认的获取数据方式为关联数组
PDO::ATTR_EMULATE_PREPARES => false, // 关闭预处理语句的模拟,使用真实的预处理语句可以提高安全性
];
try {
// 尝试使用提供的DSN、用户名、密码和选项来创建PDO实例
$pdo = new PDO($dsn, $user, $password, $options);
// 在这里,你可以执行数据库查询。例如:
// $stmt = $pdo->query('SELECT * FROM some_table');
// while ($row = $stmt->fetch()) {
// echo $row['column_name'];
// }
// 注意:在实际应用中,你应该使用预处理语句来执行查询,特别是当查询中包含用户输入时,以提高安全性。
} catch (\PDOException $e) {
// 如果在尝试连接数据库时发生错误,PDO会抛出PDOException异常。
// 在这里,你可以处理这个异常,例如记录错误日志、向用户显示错误消息等。
// 示例:echo "数据库连接失败:" . $e->getMessage();
// 发送错误响应给调用者(这取决于你的应用架构,可能是向前端返回错误信息,或者记录到日志等)
}
小程序前端
wx.request({
url: 'php路径',
success: (res)=> {
console.log(res.data);
//处理数据
}
})
实例
PHP
<?php
//数据库连接信息
$host = "localhost";
$charset = 'utf8mb4';
$user = 'root';
$password = '123456';
$db_name = 'user';
$port = 3300;//注意不要被占用即可
// 创建PDO实例
$dsn = "mysql:host=$host;port=$port;dbname=$db_name;charset=$charset";
// PDO选项数组
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
try {
$pdo = new PDO($dsn, $user, $password, $options);
// 在这里执行您的数据库查询
$sql = "SELECT * FROM user;";
$stmt = $pdo->query($sql);
// 检查结果集
$results = [];
while ($row = $stmt->fetch()) {
$results[] = $row; // 将每一行作为数组添加到结果集中
}
// 将结果编码为JSON并发送回调用者
header('Content-Type: application/json');
echo json_encode($results);
// 释放语句资源(尽管在某些PDO配置中这是自动的)
$stmt->closeCursor();
// 关闭PDO连接(如果您在脚本的末尾不再需要数据库连接)
// $pdo = null; // 或者使用$pdo->close();,但设置为null通常更简洁
} catch (\PDOException $e) {
// 发送错误响应给调用者
http_response_code(500); // 设置HTTP状态码为500内部服务器错误
echo json_encode(['error' => $e->getMessage()]); // 将错误信息编码为JSON并发送
}
小程序前端
wx.request({
url: '/php/user/list.php',
success: (res)=> {
console.log(res.data);
//处理数据
}
})
拓展
PHP
增
<?php
//数据库连接信息
$host = "localhost";
$charset = 'utf8mb4';
$user = 'root';
$password = '123456';
$db_name = 'user';
$port = 3316;
// 创建PDO实例
$dsn = "mysql:host=$host;port=$port;dbname=$db_name;charset=$charset";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
// 接收前端数据
$name= $_GET['name'];
$phone= $_GET['phone'];
$age= $_GET['age'];
try {
$pdo = new PDO($dsn, $user, $password, $options);
// 构造预处理语句
$stmt = $pdo->prepare('INSERT INTO user ( name, phone, age ) VALUES (?,?,?)');
// 绑定参数并执行
$stmt->execute([ $name, $phone, $age ]);
// 释放语句资源(尽管在某些PDO配置中这是自动的)
$stmt->closeCursor();
// 关闭PDO连接(如果您在脚本的末尾不再需要数据库连接)
$pdo = null; // 或者使用$pdo->close();,但设置为null通常更简洁
} catch (\PDOException $e) {
// 发送错误响应给调用者
http_response_code(500); // 设置HTTP状态码为500内部服务器错误
echo json_encode(['error' => $e->getMessage()]); // 将错误信息编码为JSON并发送
}
删
// 其他不变,其他不变,其他不变
// 接收前端数据
$id = $_GET['id'];
// 构造预处理语句
$stmt = $pdo->prepare('DELETE FROM user WHERE id = ?');
// 绑定参数并执行
$stmt->execute([ $id ]);
改
// 其他不变,其他不变,其他不变
// 接收前端数据
$id = $_GET['id'];
$name = $_GET['name'];
$phone = $_GET['phone'];
$age= $_GET['age'];
// 构造预处理语句
$stmt = $pdo->prepare('UPDATE user SET name = ?, phone = ?, age = ? WHERE id = ?');
// 绑定参数并执行
$stmt->execute([ $name, $phone, $age, $id ]);
小程序js
add() {
var data = {
name: "张三",
phone: "21345678901",
age: "20"
}
wx.request({
url: '/php/user/add.php',
data: data,
success:(res)=> {
if (res.statusCode == 200) {
console.log("添加成功");
}
}
})
},
delete() {
wx.request({
url: '/php/user/delete.php?id=1',
success:(res)=> {
if (res.statusCode == 200) {
console.log("删除成功");
}
}
})
},
change() {
var data = {
id:1,
name: "李四",
phone: "12345678900",
age: "21"
}
wx.request({
url: '/php/user/change.php',
data: data,
success:(res)=> {
if (res.statusCode == 200) {
console.log("修改成功");
}
}
})
},