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

Mary-Kate Olsen
发布: 2024-11-10 22:01:03
原创
958 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板