Bagaimana untuk Beralih daripada Fungsi MySQL yang Dihentikan kepada PDO dalam PHP?

Mary-Kate Olsen
Lepaskan: 2024-11-10 22:01:03
asal
958 orang telah melayarinya

How to Transition from Deprecated MySQL Functions to PDO in PHP?

Cara Beralih daripada Fungsi MySQL ke PDO

Fungsi MySQL Ditangguhkan

Versi PHP Moden menghentikan fungsi MySQL kerana batasan dan kebimbangan keselamatannya. Sebaliknya, pembangun harus menggunakan sambungan PDO atau MySQLi untuk ketersambungan dan keselamatan pangkalan data yang lebih baik.

Pengenalan kepada PDO

PDO adalah singkatan dari PHP Data Objects dan menyediakan API yang konsisten untuk menyambung ke sistem pangkalan data yang berbeza, termasuk MySQL dan MSSQL. Tidak seperti fungsi MySQL, PDO menggunakan antara muka bersatu dan menawarkan peningkatan keselamatan melalui pernyataan yang disediakan.

Menyambung ke Pangkalan Data

Sambungan MySQL:

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

$dbh = new PDO($dsn, $user, $password);
Salin selepas log masuk

MSSQL Sambungan:

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

$dbh = new PDO($dsn, $user, $password);
Salin selepas log masuk

Melaksanakan Pertanyaan

PDO menggunakan pernyataan yang disediakan dan bukannya rentetan SQL biasa untuk mengelakkan kerentanan suntikan SQL. Penyata yang disediakan dibina dengan pemegang tempat yang kemudiannya terikat kepada pembolehubah.

Pemegang Tempat Dinamakan:

$SQL = 'SELECT ID, EMAIL FROM users WHERE user = :username';
$queryArguments = array(':username' => $username);
$result = $dbh->prepare($SQL);
$result->execute($queryArguments);
Salin selepas log masuk

Pemegang Tempat Berindeks:

$SQL = 'SELECT ID, EMAIL FROM users WHERE user = ?';
$bindParamResults = array($username);
$result = $dbh->prepare($SQL);
$result->bindParam(1, $bindParamResults[0]);
$result->execute();
Salin selepas log masuk

Mengambil Keputusan

Keputusan boleh diambil menggunakan pelbagai kaedah, seperti fetch() dan fetchAll().

$row = $result->fetch(PDO::FETCH_ASSOC);  // Returns an associative array
$allRows = $result->fetchAll(PDO::FETCH_ASSOC);  // Returns an array of associative arrays
Salin selepas log masuk

Contoh Kelas PDO

class PDOC {

    public function __construct($dsn, $user, $password) {
        $this->dbh = new PDO($dsn, $user, $password);
    }

    public function query($sql, $params = array()) {
        $stmt = $this->dbh->prepare($sql);
        $stmt->execute($params);
        return $stmt;
    }
}
$pdod = new PDOC('mysql:dbname=db;host=localhost', 'root', '');

$query = $pdod->query('SELECT * From table WHERE id = ?', array(2));
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Beralih daripada Fungsi MySQL yang Dihentikan kepada PDO dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan