以下是一个简单的PHP类示例,用于实现MySQL数据库的基本操作,包括连接数据库、执行查询、插入数据、更新数据和删除数据。请注意,这个示例使用了`mysqli`扩展,因为它比旧的`mysql`扩展提供了更好的功能和安全性。
<?php
class Database {
private $host = 'localhost'; // 数据库服务器地址
private $username = 'your_username'; // 数据库用户名
private $password = 'your_password'; // 数据库密码
private $dbname = 'your_dbname'; // 数据库名
private $conn;
// 构造函数,初始化数据库连接
public function __construct() {
$this->conn = new mysqli($this->host, $this->username, $this->password, $this->dbname);
// 检查连接
if ($this->conn->connect_error) {
die("连接失败: " . $this->conn->connect_error);
}
}
// 执行查询
public function query($sql) {
$result = $this->conn->query($sql);
return $result;
}
// 插入数据
public function insert($table, $data) {
$keys = implode(',', array_keys($data));
$values = ':' . implode(', :', array_keys($data));
$sql = "INSERT INTO $table ($keys) VALUES ($values)";
// 注意:这里简化了预处理语句的使用,实际使用时应该使用预处理语句来防止SQL注入
// 下面的代码仅用于演示目的
$types = str_repeat('s', count($data)); // 假设所有字段都是字符串类型
$bind = array_combine(array_keys($data), $data);
// 实际应用中,这里应该使用预处理语句和绑定参数
// $stmt = $this->conn->prepare($sql);
// $types = str_repeat('s', count($data));
// $bind = array_combine(array_map(function($i) { return ":$i"; }, array_keys($data)), array_values($data));
// $stmt->bind_param($types, ...array_values($bind));
// $stmt->execute();
// 这里直接执行SQL语句(不推荐,仅用于演示)
$this->conn->query($sql); // 注意:这里会导致SQL注入风险
return $this->conn->insert_id; // 返回最后插入行的ID
}
// 更新数据(示例,未使用预处理语句)
public function update($table, $data, $where) {
$sets = [];
foreach ($data as $key => $value) {
$sets[] = "$key = :$key";
}
$sql = "UPDATE $table SET " . implode(', ', $sets) . " WHERE " . $where;
// 实际应用中应使用预处理语句
// 这里直接执行SQL语句(不推荐,仅用于演示)
$this->conn->query($sql); // 注意:这里会导致SQL注入风险
return $this->conn->affected_rows; // 返回受影响的行数
}
// 删除数据(示例,未使用预处理语句)
public function delete($table, $where) {
$sql = "DELETE FROM $table WHERE " . $where;
// 实际应用中应使用预处理语句
// 这里直接执行SQL语句(不推荐,仅用于演示)
$this->conn->query($sql); // 注意:这里会导致SQL注入风险
return $this->conn->affected_rows; // 返回受影响的行数
}
// 析构函数,关闭数据库连接
public function __destruct() {
$this->conn->close();
}
}
// 使用示例
$db = new Database();
// $result = $db->query("SELECT * FROM your_table");
// ...
// 注意:上面的插入、更新和删除方法仅提供了框架,未使用预处理语句,实际使用时应该使用预处理语句。
?>
**重要提醒**:
- 插入、更新和删除操作中的SQL语句示例未使用预处理语句(Prepared Statements),这在实际应用中是不安全的,因为它可能导致SQL注入攻击。为了安全起见,你应该使用预处理语句来绑定参数。
- 示例中的`insert`、`update`和`delete`方法仅用于展示如何构建SQL语句的框架,并未真正实现安全的参数绑定。在实际开发中,你应该使用预处理语句来确保SQL语句的安全性。
-