PHP MySQL扩展已弃用 - 任何开源解决方案?

时间:2013-07-05 22:56:09

标签: php mysql deprecated

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

注意:我确实认识到重写代码更好,因为我可以利用绑定参数等安全功能,(我在编写新代码或重写旧代码时一直使用PDO和绑定参数)在我去的时候更换所有内容,所以网站代码的很大一部分已经存在了)但是我在这个网站上有很多旧的代码仍在使用MySQL扩展,我担心它会采取转换它比我更长。我在工作中得到了其他优先事项,并且期望我将有时间作为一个单独的项目同时完成所有工作是不可行的。为了确保网站能够在删除此功能后继续使用,我必须确保在删除MySQL扩展时所有旧代码和开源代码都能继续运行。理论上我可以关闭PHP更新,但这可能会带来安全风险,并且当我编写新代码时会迫使我继续编写旧代码。我可以等一下,看看我以后是否有时间这样做,但是我找不到删除MySQL扩展的日期,所以感觉太像赌博了。

如果有人有其他有用的建议,我会有兴趣听到他们的意见。

P.S。事实上,我确实打算和我的经理讨论关于MySQL弃用的问题,并且问这个问题是我准备过程的一部分。他要问的第一件事是“你找了一个解决方法吗?”如果我拒绝,他会把我送去列出我们的选择。此外,他已经被告知我们应该做的安全项目。请记住,经济不是很好,IT需求很大 - 我们的IT部门人手不足,而且我们没有足够的时间来完成我们优先考虑的所有事情。请保留居高临下的观点。

3 个答案:

答案 0 :(得分:0)

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

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

  • 由于要删除的功能和当前代码是安全漏洞,部分代码需要重写。
  • 需要X小时。

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

我在做一些由常量提示的研究时发现了这个问题" mysql_已被弃用"关于PHP / MySQL问题的评论 - 这对解决问题没什么作用。

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

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

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

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