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);
MSSQL Sambungan:
$dsn = 'sqlsrv:Server=127.0.0.1;Database=databasename'; $user = 'dbuser'; $password = 'dbpass'; $dbh = new PDO($dsn, $user, $password);
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);
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();
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
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));
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!