首页 >后端开发 >php教程 >如何从已弃用的 MySQL 函数过渡到 PHP 中的 PDO?

如何从已弃用的 MySQL 函数过渡到 PHP 中的 PDO?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-10 22:01:031047浏览

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

如何从 MySQL 函数转换到 PDO

已弃用的 MySQL 函数

现代 PHP 版本由于 MySQL 函数的局限性和安全问题,不推荐使用它们。相反,开发人员应该使用 PDO 或 MySQLi 扩展来提高数据库连接性和安全性。

PDO 简介

PDO 代表 PHP 数据对象,并为连接到不同的数据库系统,包括MySQL和MSSQL。与 MySQL 函数不同,PDO 使用统一的接口,并通过准备好的语句提供更高的安全性。

连接到数据库

MySQL 连接:

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

$dbh = new PDO($dsn, $user, $password);

MSSQL 连接:

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

$dbh = new PDO($dsn, $user, $password);

执行查询

PDO 使用准备好的语句而不是纯 SQL 字符串来防止 SQL注入漏洞。准备好的语句是使用稍后绑定到变量的占位符构建的。

命名占位符:

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

索引占位符:

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

获取结果

可以使用多种方法获取结果,例如 fetch() 和 fetchAll()。

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

示例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));

以上是如何从已弃用的 MySQL 函数过渡到 PHP 中的 PDO?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn