首页 >数据库 >mysql教程 >如何从已弃用的 MySQL 函数迁移到 PDO for MySQL 和 MSSQL?

如何从已弃用的 MySQL 函数迁移到 PDO for MySQL 和 MSSQL?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-10 09:33:42458浏览

How to Migrate from Deprecated MySQL Functions to PDO for MySQL and MSSQL?

将 MySQL 函数转换为适用于 MySQL 和 MSSQL 的 PDO

MySQL 函数的弃用和替代方案

MySQL 函数扩展已弃用,将在未来版本中移除。建议使用 MySQLi 或 PDO_MySQL 扩展作为替代。与 MySQL 函数相比,MySQLi 和 PDO 提供了改进的安全性和功能。

实施 PDO

PDO (PHP Data Objects) 是用于访问数据库的面向对象的 API。要使用 PDO 连接到数据库,请使用 PDO 构造函数创建一个新的 PDO 实例。

连接到 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>

连接到 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>

使用 PDO 执行查询

PDO 使用预处理语句来防止 SQL 注入漏洞。预处理语句定义了一个带有命名或索引占位符的 SQL 查询,用于表示变量。

<code class="language-php">$SQL = 'SELECT ID, EMAIL FROM users WHERE user = :username';
$preparedStatement = $dbh->prepare($SQL);</code>

绑定变量

使用 bindParambindValue 将值绑定到预处理语句。

<code class="language-php">$preparedStatement->bindParam(':username', $username);</code>

执行查询

执行预处理语句以获取结果。

<code class="language-php">$preparedStatement->execute();</code>

获取结果

PDO 提供了 fetchfetchAll 等方法,可以将结果作为数组检索。

<code class="language-php">while ($row = $preparedStatement->fetch()) {
    echo $row['ID'];
    echo $row['EMAIL'];
}</code>

使用 PDO 连接类

您可以创建一个 PDO 连接类来简化数据库操作。

<code class="language-php">class Database {

    protected $connection;

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

    public function query($SQL) {
        return $this->connection->query($SQL);
    }

    public function prepare($SQL, $params = []) {
        $preparedStatement = $this->connection->prepare($SQL);
        $preparedStatement->execute($params);
        return $preparedStatement;
    }

}

// 使用方法:
$db = new Database($dsn, $user, $password);

$SQL = 'SELECT ID, EMAIL FROM users WHERE user = :username';
$result = $db->prepare($SQL, ['username' => $username]);

while ($row = $result->fetch()) {
    echo $row['ID'];
    echo $row['EMAIL'];
}</code>

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

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