Rumah >pangkalan data >tutorial mysql >Mengapa Saya Perlu Menggantikan Fungsi MySQL dengan PDO dalam PHP?

Mengapa Saya Perlu Menggantikan Fungsi MySQL dengan PDO dalam PHP?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-10 08:53:45771semak imbas

Why Should I Replace MySQL Functions with PDO in PHP?

Peralihan daripada Fungsi MySQL kepada PDO dalam PHP

Fungsi MySQL PHP dijadualkan untuk penamatan dan akhirnya dialih keluar. Untuk memastikan keserasian masa hadapan dan memanfaatkan keselamatan dan fungsi yang dipertingkatkan, pembangun harus berhijrah ke PHP Data Objects (PDO), lapisan akses pangkalan data berorientasikan objek yang teguh.

Kelebihan PDO:

  • Pemodenan: PDO menggantikan fungsi MySQL yang lapuk dengan pendekatan kontemporari.
  • Agnostisisme Pangkalan Data: PDO menyediakan antara muka yang konsisten untuk menyambung ke pelbagai sistem pangkalan data, bukan hanya MySQL. Ini memudahkan penukaran pangkalan data dan meningkatkan kemudahalihan kod.
  • Pencegahan Suntikan SQL: Kenyataan yang disediakan PDO adalah penting untuk mencegah kelemahan suntikan SQL, kebimbangan keselamatan utama.

Menyambung ke Pangkalan Data dengan PDO

Sambungan MySQL:

<code class="language-php">$dsn = 'mysql:dbname=databasename;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

$dbh = new PDO($dsn, $user, $password);</code>

Sambungan MSSQL:

<code class="language-php">$dsn = 'sqlsrv:Server=127.0.0.1;Database=databasename';
$user = 'dbuser';
$password = 'dbpass';

$dbh = new PDO($dsn, $user, $password);</code>

Melaksanakan Pertanyaan dengan Penyata Disediakan

PDO menggunakan pernyataan yang disediakan untuk pelaksanaan pertanyaan yang cekap dan selamat. Begini cara untuk mengikat pembolehubah:

Parameter Dinamakan:

<code class="language-php">$statement = $dbh->prepare('SELECT * FROM users WHERE name = :username');
$statement->execute([':username' => 'example']);</code>

Parameter Terindeks:

<code class="language-php">$statement = $dbh->prepare('SELECT * FROM users WHERE name = ?');
$statement->execute(['example']);</code>

Mendapatkan Keputusan Pertanyaan

Beberapa kaedah memudahkan pengambilan keputusan:

  • fetch(): Mengembalikan satu baris sebagai tatasusunan.
  • fetchAll(): Mengembalikan semua baris sebagai tatasusunan.
  • rowCount(): Menyediakan bilangan baris yang terjejas (berguna untuk INSERT, UPDATE, DELETE).

Contoh Kelas Sambungan PDO

Untuk organisasi kod yang dipertingkatkan dan kebolehgunaan semula, pertimbangkan kelas PDO tersuai:

<code class="language-php">class MyPDO {
    public $dbh;

    public function __construct($dsn, $username, $password) {
        $this->dbh = new PDO($dsn, $username, $password);
        $this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }

    public function query($sql) {
        return $this->dbh->query($sql);
    }

    public function prepare($sql) {
        return $this->dbh->prepare($sql);
    }
}

// Example Usage:
$mypdo = new MyPDO($dsn, $username, $password);
$stmt = $mypdo->prepare('SELECT * FROM users WHERE name = :name');
$stmt->execute([':name' => 'example']);
while ($row = $stmt->fetch()) {
    echo $row['name'];
}</code>

Atas ialah kandungan terperinci Mengapa Saya Perlu Menggantikan Fungsi MySQL dengan PDO 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