Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah saya boleh menggantikan fungsi MySQL dengan PDO untuk keselamatan dan prestasi yang lebih baik?

Bagaimanakah saya boleh menggantikan fungsi MySQL dengan PDO untuk keselamatan dan prestasi yang lebih baik?

Barbara Streisand
Barbara Streisandasal
2024-11-09 07:12:02317semak imbas

How can I replace MySQL functions with PDO for improved security and performance?

Menggantikan Fungsi MySQL dengan PDO

Pengenalan

Pelanjutan mysql untuk PHP ditamatkan dan akan dialih keluar pada masa hadapan . Sebagai alternatif, sambungan PDO (Objek Data PHP) disyorkan untuk menyambung ke MySQL dan pangkalan data lain. Artikel ini menyediakan panduan tentang cara menggantikan fungsi mysql dengan PDO.

Mengapa Tukar kepada PDO?

  • Keselamatan yang dipertingkatkan: PDO menyediakan perlindungan terhadap serangan suntikan SQL.
  • Prestasi yang dipertingkatkan: PDO meminimumkan overhed dan menyediakan mekanisme caching yang lebih baik.
  • Pengabstrakan pangkalan data: PDO membolehkan lancar sambungan kepada pelbagai jenis pangkalan data.

Menyambung ke MySQL

$dsn = 'mysql:dbname=databasename;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

$connection = new PDO($dsn, $user, $password);
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Menyambung ke MSSQL

$dsn = 'sqlsrv:Server=127.0.0.1;Database=databasename';
$user = 'dbuser';
$password = 'dbpass';

$connection = new PDO($dsn, $user, $password);
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Melaksanakan Pertanyaan

PDO menggunakan pernyataan yang disediakan untuk mengelakkan kelemahan suntikan SQL.

  • Pertanyaan yang disediakan dengan parameter bernama:
$SQL = 'SELECT ID, EMAIL FROM users WHERE name = :username';
$stmt = $connection->prepare($SQL);
$stmt->execute([':username' => 'someone']);
  • Pertanyaan yang disediakan dengan parameter diindeks:
$SQL = 'SELECT ID, EMAIL FROM users WHERE name = ?';
$stmt = $connection->prepare($SQL);
$stmt->execute(['someone']);

Mengambil Keputusan

  • Mengambil satu baris sebagai tatasusunan:
$row = $stmt->fetch(PDO::FETCH_ASSOC);
  • Mengambil semua baris sebagai tatasusunan:
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

Kelas Contoh

Kelas sambungan PDO mudah untuk merangkum operasi biasa:

class PdoConnection {

    public function __construct($dsn, $user, $password, $options = []) {
        // ... initialize connection
    }

    public function query($sql) {
        // ... execute query and return result
    }

    public function prepare($sql, $params = []) {
        // ... execute prepared query and return result
    }
}

Atas ialah kandungan terperinci Bagaimanakah saya boleh menggantikan fungsi MySQL dengan PDO untuk keselamatan dan prestasi yang lebih baik?. 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