php – 将大型网站从MySQL切换到MySQLi

我想从 MySQL切换到 MySQLi,但我有一个非常大的网站.

我读到https://wikis.oracle.com/display/mysql/Converting+to+MySQLi可以帮助我,我读了How could I change this mysql to mysqli?.它说我可以用函数添加’i’替换大部分函数,​​并且我应该开始bughunting.

但是我的网站非常复杂和庞大,需要很长时间才能检查一切是否正常.那么:对于一个非常大的网站,从MysqL切换到MysqLi的最佳方法是什么?

谢谢!

对于你的问题没有简单的答案,因为实际上每个简单的方法都可以在编写应用程序时以不同的方式做事.

如果您在整个代码中直接调用MysqL_ *函数,而没有通过辅助类或函数进行查询数据库抽象层,那么您将需要编辑每个命令.

你不能只是为MysqL_query这样的命令添加一个mys,因为程序上MysqLi_query()要求第一个参数是db的链接,如果连接是MysqL_query(),那么它就是第二个参数.

而不是仅仅将MysqL_query(…)更改为MysqLi_query($link,…..)我建议没有更好的时间来放置db抽象层.因此,使用实际处理查询函数,例如sql_query(),以便将来如果需要再次更改DB,只需在一个抽象文件中更新db特定命令即可.这样,如果你编写一个包装MysqLi_query的函数,那么你就可以简单地将你的MysqL_query()重命名为你的helper函数,并让helper函数担心把链接放在那里.

虽然这是最简单的方法,但它不会绑定参数或准备语句,这是防止sql注入漏洞的主要因素

一旦更改了所有这些命令,就需要进行测试.

如果您没有编写自动化测试,那么这可能是开始编写它们的好时机.即使您需要检查每个更改是否有效,如果您通过自动化测试进行,那么您可以避免将来的这种痛苦.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...