Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk merangkum kelas penambahan, pemadaman dan pengubahsuaian pangkalan data dalam PHP

Bagaimana untuk merangkum kelas penambahan, pemadaman dan pengubahsuaian pangkalan data dalam PHP

PHPz
PHPzasal
2023-03-22 15:22:411446semak imbas

Dengan pembangunan aplikasi web, permintaan untuk pengurusan pangkalan data juga semakin tinggi. Sebagai pengaturcara PHP, cara mengoptimumkan operasi menambah, memadam, mengubah suai dan menyemak adalah masalah yang mesti diselesaikan. Masalah ini boleh diselesaikan dengan menggunakan kelas PHP yang merangkumi penambahan pangkalan data, pemadaman dan pengubahsuaian.

1. Mengapa anda perlu merangkum kelas pangkalan data?

Biasanya, apabila melakukan operasi pangkalan data, kami akan beroperasi dalam logik utama aplikasi, seperti mengendalikan pangkalan data dalam pengawal. Tetapi sebenarnya, terdapat beberapa masalah yang jelas dengan pendekatan ini:

  • Lewahan kod: Dalam aplikasi kami, berkemungkinan berbilang pengawal perlu beroperasi pada pangkalan data. Jika setiap pengawal menulis kod untuk operasi pangkalan data secara berasingan, akan terdapat banyak kod berlebihan.

  • Kebolehbacaan kod yang lemah: Dalam kes ini, kebolehbacaan kod juga lemah. Kemungkinan besar sekeping kod yang sama akan muncul dalam berbilang pengawal, yang akan menyebabkan masalah kepada pembangun lain.

  • Isu keselamatan: Terdapat risiko keselamatan tertentu apabila menulis kod operasi pangkalan data terus dalam aplikasi. Contohnya, isu seperti suntikan sql.

Ringkasnya, adalah perlu bagi kami untuk merangkum kod operasi pangkalan data kami dan menjadikannya modul bebas. Modul ini perlu mempunyai ciri-ciri berikut:

  • Mempunyai kebolehbacaan yang baik

  • Dapat menggunakan semula kod dengan mudah

  • Mempunyai skalabiliti yang baik

  • Boleh menyelesaikan masalah keselamatan dengan berkesan

2. Merangkumkan pangkalan data Idea asas untuk menambah , memadam dan mengubah suai kelas

Sebagai tindak balas kepada masalah yang dinyatakan di atas, kita boleh menulis kelas dalam bentuk perpustakaan php untuk memudahkan penggunaan semula kelas. Idea asas untuk merangkum kelas penambahan, pemadaman dan pengubahsuaian pangkalan data adalah seperti berikut:

  • Merangkum semua operasi pangkalan data dalam kelas, seperti dipanggil kelas db.

  • Tulis kaedah biasa untuk melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data.

  • Laksanakan pertanyaan berparameter dalam kaedah untuk mengelakkan isu keselamatan dengan berkesan seperti suntikan SQL.

  • Tangkap semua maklumat ralat, rangkumkannya ke dalam pengecualian bersatu dan buangnya ke kod lapisan atas.

Berikut ialah pelaksanaan kelas db mudah:

class db {
  private $db_host;
  private $db_user;
  private $db_pass;
  private $db_name;
  private $conn;
  function __construct($db_host, $db_user, $db_pass, $db_name) {
    $this->db_host = $db_host;
    $this->db_user = $db_user;
    $this->db_pass = $db_pass;
    $this->db_name = $db_name;
  }
  // 数据库连接方法
  function connect() {
    $this->conn = mysqli_connect($this->db_host, $this->db_user, $this->db_pass, $this->db_name);
    if (!$this->conn) {
      throw new Exception('数据库连接失败');
    }
    mysqli_query($this->conn, "SET NAMES 'utf8'");
  }
  // 数据库关闭方法
  function close() {
    mysqli_close($this->conn);
  }
  // 查询方法,参数化查询
  function query($sql, $params) {
    $stmt = mysqli_prepare($this->conn, $sql);
    if (!$stmt) {
      throw new Exception('query error: '.mysqli_error($this->conn));
    }
    if (count($params) > 0) {
      call_user_func_array('mysqli_stmt_bind_param', array_merge(array($stmt, str_repeat('s', count($params))), $params));
    }
    $result = mysqli_stmt_execute($stmt);
    if (!$result) {
      throw new Exception('query error: '.mysqli_stmt_error($stmt));
    }
    $rows = array();
    $meta = mysqli_stmt_result_metadata($stmt);
    if ($meta) {
      while ($field = mysqli_fetch_field($meta)) {
        $params[] = &$row[$field->name];
      }
      call_user_func_array(array($stmt, 'bind_result'), $params);
      while (mysqli_stmt_fetch($stmt)) {
        $rows[] = $row;
      }
    }
    mysqli_stmt_close($stmt);
    return $rows;
  }
  // 增加方法,参数化查询
  function insert($table, $data) {
    $sql = 'INSERT INTO '.$table.' ('.implode(',', array_keys($data)).') VALUES ('.implode(',', array_fill(0, count($data), '?')).')';
    $result = $this->query($sql, array_values($data));
    return mysqli_affected_rows($this->conn);
  }
  // 更新方法
  function update() {
    // 实现更新方法
  }
  // 删除方法
  function delete() {
    // 实现删除方法
  }
}

3 Gunakan kelas terkapsul

Apabila kita perlu menambah, memadam, mengubah suai dan menanyakan pangkalan data, kita hanya perlu memperkenalkan kelas db dan kemudian membuat instantiat. Contohnya:

require_once 'db.php';
$db = new db('localhost', 'root', 'root', 'test');
$db->connect();
$sql = 'INSERT INTO `user`(`name`, `age`) VALUES (?, ?)';
$data = array('Tom', '18');
$db->query($sql, $data);
$db->close();

4. Ringkasan

Kelas yang merangkumi penambahan, pemadaman dan pengubahsuaian pangkalan data ialah tugas yang mesti kami selesaikan dalam aplikasi web. Dengan merangkum operasi pangkalan data ke dalam kelas, kebolehbacaan, kebolehselenggaraan dan keselamatan kod boleh dipertingkatkan, dan penggunaan semula kod juga boleh dipermudahkan. Kesimpulannya, kita harus memberi perhatian kepada pembangunan kelas operasi pangkalan data terkapsul.

Atas ialah kandungan terperinci Bagaimana untuk merangkum kelas penambahan, pemadaman dan pengubahsuaian pangkalan data dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn