5

根据 PHP.net 网站,从 PHP 5.5+ 起不推荐使用 MySQL 扩展鉴于大量使用 MySQL 的 PHP 站点,我想知道使用 MySQL 的现有站点的最佳实践是什么。您会在支持 MySQL 的 PHP 版本上稳定您的网站吗?或者承担迁移到另一个数据库扩展的成本和时间承诺?

4

5 回答 5

6

如果您有开发时间,那么我强烈建议您迁移到 PDO 或 MySQLi。这些扩展将由 PHP 组维护和正式支持。

如果您的应用程序确实稳定且安全,那么我将禁用 5.5 将生成的警告。当扩展被删除时,我确信它仍然会作为一个 PECL 扩展存在,然后我会包含它。

于 2012-12-16T15:57:04.200 回答
4

不推荐使用 MySQL 扩展,而不是整个 MySQL 支持。PHP 目前正在尝试推送新的 MySQLi 扩展作为替代:

http://php.net/manual/en/book.mysqli.php

MySQLi 对旧函数进行了改进,允许您以程序方式(如以前)或使用对象执行 MySQL 函数。

于 2012-12-16T15:52:43.680 回答
4

我想知道使用 MySQL 的现有站点的最佳实践是什么。

这个很容易回答。
您的应用程序代码中根本不应该有 Mysql(以及 Mysqli 或 PDO)函数。
如果您使用这样的原始 API 函数

$data   = array();
$name   = mysql_real_escape_string($_GET['name']);
$result = mysql_query("SELECT * FROM table WHERE name = '$name'");
while ($row = mysql_fetch_row($result)){   
    $data[] = $row;
}

然后你必须立即开始重写你的代码,使用一些数据库包装器而不是直接的原始 API 调用,让它看起来像这样:

$data = $db->getAll("SELECT * FROM table where name=?s",$_GET['name']); 

它不仅会显着缩短和简化您的代码,而且还将所有 API 调用放在一个库中,当 PHP 团队决定杀死另一个优秀的 ext 时,可以将其更改为任何新的 API。

于 2012-12-16T16:09:56.997 回答
2

正如 PHP 手册所写,http ://php.net/manual/en/intro.mysql.php

此扩展自 PHP 5.5.0 起已弃用,不推荐用于编写新代码,因为它将在未来被删除。相反,应该使用 mysqli 或 PDO_MySQL 扩展。在选择 MySQL API 时,另请参阅 MySQL API 概述以获得更多帮助。

你应该使用mysqli。

于 2012-12-16T15:54:49.357 回答
1

如果您要离开 mysql,请不要选择 MySQLi,而是选择PDO

mysqli 或 PDO - 有什么优点和缺点?

如我所见:PDO > MySQLi > mysql。

一些 PDO 专业人士:

  • 多数据库
  • 面向对象(如果您不提供可选的 dblink,则没有具有奇怪副作用的全局函数)
  • 快速地
  • 特殊的 MySQL 特定选项仍然可用: http: //php.net/manual/en/ref.pdo-mysql.php
于 2012-12-16T16:07:02.057 回答