将 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>
绑定变量
使用 bindParam
或 bindValue
将值绑定到预处理语句。
<code class="language-php">$preparedStatement->bindParam(':username', $username);</code>
执行查询
执行预处理语句以获取结果。
<code class="language-php">$preparedStatement->execute();</code>
获取结果
PDO 提供了 fetch
和 fetchAll
等方法,可以将结果作为数组检索。
<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中文网其他相关文章!