php类怎么写增删改查
时间 : 2023-04-01 08:45:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

在PHP中,我们通常会使用类来封装相关的函数和方法,以便在不同的页面和应用程序中增加、删除、修改、查询数据。本篇文章将为你介绍如何编写基本的PHP类以进行增删改查操作。

首先,我们需要在PHP中建立数据库连接以及定义基本的增删改查方法。我们可以通过以下方式来创建数据库连接:

```php

class Connection {

private $host = 'localhost';

private $dbname = 'test';

private $username = 'root';

private $password = '';

public function connect() {

try {

$conn = new PDO('mysql:host=' . $this->host . ';dbname=' . $this- >dbname, $this->username, $this->password);

$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

return $conn;

} catch(PDOException $e) {

echo 'Connection Error: ' . $e->getMessage();

}

}

}

```

在上面的代码中,我们创建了一个名为Connection的类,并定义了私有变量$host、$dbname、$username和$password来保存数据库连接的详细信息,并且声明了一个名为connect()的方法来建立连接。这个方法包含了一个try-catch块来捕获连接异常,并在连接失败时输出错误消息。

现在我们需要编写基本的增删改查方法。以下是一个示例类中的增删改查示例代码:

```php

class User {

private $conn;

private $table = 'users';

public $id;

public $name;

public $email;

public $created_at;

public function __construct($db) {

$this->conn = $db;

}

public function read () {

$query = 'SELECT * FROM ' . $this->table;

$stmt = $this->conn->prepare($query);

$stmt->execute();

return $stmt;

}

public function create() {

$query = 'INSERT INTO ' . $this->table . ' SET name = :name, email = :email, created_at = NOW()';

$stmt = $this->conn->prepare($query);

$this->name = htmlspecialchars(strip_tags($this->name));

$this->email = htmlspecialchars(strip_tags($this->email));

$stmt->bindParam(':name', $this->name);

$stmt->bindParam(':email', $this->email);

if ($stmt->execute()) {

return true;

}

printf("Error: %s.\n", $stmt->error);

return false;

}

public function update() {

$query = 'UPDATE ' . $this->table . ' SET name = :name, email = :email WHERE id = :id';

$stmt = $this->conn->prepare($query);

$this->id = htmlspecialchars(strip_tags($this->id));

$this->name = htmlspecialchars(strip_tags($this->name));

$this->email = htmlspecialchars(strip_tags($this->email));

$stmt->bindParam(':id', $this->id);

$stmt->bindParam(':name', $this->name);

$stmt->bindParam(':email', $this->email);

if ($stmt->execute()) {

return true;

}

printf("Error: %s.\n", $stmt->error);

return false;

}

public function delete() {

$query = 'DELETE FROM ' . $this->table . ' WHERE id = :id';

$stmt = $this->conn->prepare($query);

$this->id = htmlspecialchars(strip_tags($this->id));

$stmt->bindParam(':id', $this->id);

if ($stmt->execute()) {

return true;

}

printf("Error: %s.\n", $stmt->error);

return false;

}

}

```

在上面的代码中,我们创建了一个名为User的类,并定义了MySQL数据库中的表名和基本的增删改查方法。类中的__construct()调用了之前创建的Connection连接方法,以连接到数据库。类中的public $id、public $name、public $email和public $created_at用于保存用户信息。

- read()方法:在这个方法中,我们使用SELECT语句从users表中获取所有用户的信息并返回结果集。

- create()方法:该函数使用INSERT语句将新用户添加到用户表中。

- update()方法:此函数使用UPDATE语句更新现有用户的信息。

- delete()方法:该函数使用DELETE语句从数据表中删除用户。

在方法中,我们都使用$pdo->prepare()函数来准备SQL语句,然后通过bindValue()或bindParam()方法绑定变量。 bindParam() 比 bindValue() 更加灵活,它更适合绑定变量。

在完成这些操作后,我们可以在PHP文件中使用如下代码来调用这些方法:

```php

include_once 'connection.php';

include_once 'user.php';

$database = new Connection();

$db = $database->connect();

$user = new User($db);

$stmt = $user->read();

```

本篇文章介绍了如何在PHP中创建基本的增删改查类,以及如何调用这些方法来与数据库进行交互。通过这些步骤,你可以在自己的应用程序中实现与数据库的基本交互。

在PHP中,我们可以通过构建一个类来实现增删改查的功能。这个类应该包括一些公共方法和属性,它们可以帮助我们与数据库进行交互。下面,我们将逐一介绍这些方法和属性。

属性:

1. $host – 数据库主机地址,通常为localhost(本地)或其他IP地址。

2. $username – 连接数据库的用户名。

3. $password – 连接数据库的密码。

4. $database – 数据库名称。

5. $connection – 存储数据库连接的变量。

以上属性在构建类的时候可以在类中声明。

方法:

1. connect() – 该方法用于连接到数据库,需要传递$host、$username、$password和$database作为参数。它应该使用mysqli_connect函数打开一个新的连接,并将其存储在$connection变量中。

2. executeQuery() – 该方法用于执行查询,并返回一个结果集,需要传递SQL语句作为参数。它应该使用mysqli_query函数发送SQL查询请求,并返回与查询结果相应的结果集。

3. fetchArray() – 该方法用于从一个结果集中检索单行数据,需要传递结果集对象作为参数。它应该使用mysqli_fetch_array函数从结果集中检索单行数据。

4. getAll() – 该方法用于检索单个表中的所有数据,并返回一个二维数组。它应该使用executeQuery和fetchArray方法来获取所有数据。

5. getOne() – 该方法用于检索单个表中特定的行数据,需要传递SQL语句作为参数。它应该使用executeQuery和fetchArray方法来检索单个结果行。

6. insert() – 该方法用于向一个表中插入一行数据,需要传递一个关联数组作为参数。它应该使用mysqli_query函数将数据插入到表中。

7. update() – 该方法用于更新一个表中的一行数据,需要传递一个关联数组和一个条件语句作为参数。它应该使用mysqli_query函数更新指定行的数据。

8. delete() – 该方法用于删除一个表中的一行数据,需要传递一个条件语句作为参数。它应该使用mysqli_query函数从表中删除指定行的数据。

下面是一个完整的实现了增删改查的PHP类:

```php

class Database {

private $host = "localhost";

private $username = "username";

private $password = "password";

private $database = "database_name";

private $connection;

public function __construct() {

$this->connect();

}

private function connect() {

$this->connection = mysqli_connect($this->host, $this->username, $this->password, $this->database);

if (!$this->connection) {

die("Connection failed: " . mysqli_connect_error());

}

}

public function executeQuery($query) {

return mysqli_query($this->connection, $query);

}

public function fetchArray($resultSet) {

return mysqli_fetch_array($resultSet);

}

public function getAll($table) {

$query = "SELECT * FROM $table";

$resultSet = $this->executeQuery($query);

$resultArray = array();

while ($row = $this->fetchArray($resultSet)) {

$resultArray[] = $row;

}

return $resultArray;

}

public function getOne($query) {

$resultSet = $this->executeQuery($query);

$resultArray = array();

while ($row = $this->fetchArray($resultSet)) {

$resultArray[] = $row;

}

return $resultArray[0];

}

public function insert($table, $dataArray) {

$query = "INSERT INTO $table (";

foreach ($dataArray as $key => $value) {

$query .= $key . ",";

}

$query = substr($query, 0, -1) . ") VALUES (";

foreach ($dataArray as $key => $value) {

$query .= "'" . $value . "',";

}

$query = substr($query, 0, -1) . ")";

$this->executeQuery($query);

}

public function update($table, $id, $dataArray) {

$query = "UPDATE $table SET ";

foreach ($dataArray as $key => $value) {

$query .= $key . "='" . $value . "',";

}

$query = substr($query, 0, -1) . " WHERE id=$id";

$this->executeQuery($query);

}

public function delete($table, $id) {

$query = "DELETE FROM $table WHERE id=$id";

$this->executeQuery($query);

}

}

上面的代码包括了所需的方法和属性,可以用于简单的数据交互。请注意,这只是一个简单的示例,实际的Database类可能会包括更多的方法和属性,以支持更复杂的功能。