Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将大型网站从MySQL切换到MySQLi_Php_Mysql_Mysqli_Migration_Switching - Fatal编程技术网

Php 将大型网站从MySQL切换到MySQLi

Php 将大型网站从MySQL切换到MySQLi,php,mysql,mysqli,migration,switching,Php,Mysql,Mysqli,Migration,Switching,我想从MySQL切换到MySQLi,但我有一个非常大的网站 我读那些可以帮助我的书,我也读。它说我可以用在函数中添加一个“I”来替换大多数函数,并且我应该开始bug搜索 但我的网站非常复杂和庞大,需要很长时间才能检查是否一切正常。那么:对于一个非常大的网站,从MySQL切换到MySQLi的最佳方式是什么 谢谢 您采取了正确的行动,因为mysql_*函数在最新的php版本中不受欢迎。为此,您应该下载一个转换器。。。 查看此内容并下载…您的问题没有简单的答案,因为实际上每个简单的方法都涉及到在编写应

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

我读那些可以帮助我的书,我也读。它说我可以用在函数中添加一个“I”来替换大多数函数,并且我应该开始bug搜索

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


谢谢

您采取了正确的行动,因为mysql_*函数在最新的php版本中不受欢迎。为此,您应该下载一个转换器。。。
查看此内容并下载…

您的问题没有简单的答案,因为实际上每个简单的方法都涉及到在编写应用程序时以不同的方式进行操作

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

在mysql\u query()等命令中添加i是不可能的,因为在程序上,
mysqli\u query()
要求第一个参数是指向数据库的链接,其中,
mysql\u query()
如果提供了连接,则它是第二个参数

与其只是将mysql_查询(…)更改为mysqli_查询($link,…),我建议现在最好是设置db抽象层。因此,请使用实际处理查询的函数,例如sql_query(),以便将来如果需要再次更改数据库,只需在一个抽象文件中更新特定于数据库的命令即可。这样,如果您编写了一个包装mysqli_查询的函数,那么您可以简单地将mysql_query()重命名为helper函数,让helper函数担心将链接放在那里

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

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


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

没有简单的方法。需要检查所有脚本并替换调用。和测试。改变的主要因素是什么?只是参数和函数的名称?不,我没有很多测试人员……这实际上是一个错误的举动。这样的机械替换不会增加任何安全性。作为一个手头有同样任务的新手程序员,我很欣赏应该做什么的分解,但和往常一样,紧迫的截止日期也是相关的,我没有时间去学习:抽象层是如何工作的;自动化测试是如何完成的(OOP非常新)。如果您有关于这个主题的好文档,我将不胜感激,但很可能我必须立即开始替换所有
mysql.*
调用。提前谢谢