1

我在 Google 和 stackoverflow 中搜索了“开源”、“MySQL 扩展”和“已弃用”的组合,但没有找到帮助 MySQL 扩展弃用的解决方法。我想象的是一组类或函数,它们采用完全相同的输入并以完全相同的格式输出结果,但使用 PDO 而不是 MySQL 扩展。其他开源解决方法将不胜感激。另外,如果有人知道 MySQL 扩展计划何时被删除,我真的很想知道 - 我为此搜索了互联网并没有找到它。

注意:我确实意识到重写代码更好,因为这样我可以利用绑定参数等安全功能,(我在编写新代码或重写旧代码时一直使用 PDO 和绑定参数,目的是替换它我一直在走,所以网站代码的很大一部分已经存在)但是我有很多旧代码要在这个网站上维护,这些代码仍在使用 MySQL 扩展,我担心这会花费我更长的时间转换它比我有。我在工作中被赋予了其他优先事项,期望我有时间作为一个单独的项目一次性完成这一切是不可行的。为了确保网站在删除此功能后仍然存在,我必须确保所有旧代码和开源在删除 MySQL 扩展时继续运行。理论上我可以关闭 PHP 更新,但这可能会带来安全风险,并且会迫使我在可以编写新代码时继续编写旧代码。我可以等着看我以后有没有时间做这件事,但是我找不到删除 MySQL 扩展的日期,所以感觉太像赌博了。

如果有人有其他有用的建议,我很想听听。

PS 事实上,我确实计划与我的经理谈谈 MySQL 的弃用问题,并且提出这个问题是我准备过程的一部分。他要问的第一件事是“你找到解决方法了吗?” 如果我说不,他会打发我去列出我们的选择。此外,他已经被告知我们应该做的安全项目。请记住,经济不景气,IT 需求旺盛——我们的 IT 部门人手不足,而且确实没有足够的时间来完成我们优先考虑的所有事情。请保留居高临下的情绪。

4

3 回答 3

0

如果您的代码是安全的,我不会担心这些库被弃用。它们还没有从 PHP 中删除,并且可能暂时不会。当它们被删除时,它们将被某人放入一个外部库中,每个主机都将安装该库。

重写的原因是安全性,即如果您不确定您的代码是否防注入,而不是弃用仅被弃用但有些人不能使用它的库。

于 2013-07-06T11:23:34.043 回答
0

请参阅http://www.php.net/manual/en/mysqlinfo.api.choosing.php了解已弃用的 mysql 函数和替代函数(mysqli 和 PDO)之间的一些差异。

此时使用已弃用的 mysql 函数是不负责任的。它需要重写。您提到您在工作中被赋予了其他优先事项,您不能花时间重写旧代码库。作为开发人员,您的责任是在出现此类情况时进行有效沟通。鉴于您在 PDO 中编写新代码的经验,我会估计重写 mysql 函数以使用 PDO 所需的时间。然后安排时间与您的经理/老板交谈并提出以下内容。

  • 由于功能被删除并且当前代码存在安全漏洞,部分代码需要重写。
  • 这将需要 X 小时。

坚持但有礼貌。如果您的经理/老板现在仍然愿意让您花时间做维护,我建议您更新您的简历并找到一家更好的公司。

于 2013-07-05T23:24:18.957 回答
0

在对 PHP/MySQL 问题的常量“mysql_ is deprecated”评论提示进行一些研究时,我发现了这个问题——这对解决问题几乎没有帮助。

很可能有一天 mysql_ 扩展将从 PHP 中删除(如果它还没有这样做的话)。还希望您应该使用补丁使您的平台保持最新。因此,有一天您的代码将停止工作几乎是不可避免的。

因此,您应该计划如何减轻这种影响。

一种解决方案是将 mysqli_xxx() 函数包装在相应 mysql_xxx() 函数的声明中。然后您只需要担心包含包含这些映射的文件并替换任何对is_resource($mysql_handle). 此处可用的库可以做到这一点,并提供了一些有关实现 shim 的有用指示。

如果可以从另一个方向解决问题,那就太好了——在声明为 mysqli_xxx() 的 mysql_xxx() 函数周围实现包装器。虽然不可能实现所有功能(例如异步查询),但仅实现具有 1:1 映射的功能将允许开发人员在新 API 在平台中可用之前开始编写它。但是我不知道有任何实现。

于 2016-03-22T14:49:17.390 回答