首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php/mysqlconnect弃用错误:升级到mysqli的最佳方法

问php/mysqlconnect弃用错误:升级到mysqli的最佳方法
EN

Stack Overflow用户
提问于 2015-10-13 00:22:18
回答 1查看 152关注 0票数 0

我有很多php网站的代码,它使用的是不推荐的mysql函数。(Sql注入保护通过real_escape_string)。我突然在页面顶部收到警告,mysql_connect被废弃了,这可能是因为我的主机已经升级了他们的PHP版本,毫无疑问,我必须尽快升级到mysqli。这不是一件容易的事情,因为我们正在谈论成千上万的电话。

然而,尽管该站点正在闪烁这些警告,但大多数调用仍然有效,即您可以登录并显示数据驱动的页面。事实上,我只收到关于三个函数的警告: mysql_connect、mysql_numrows和dates。

如果mysql_connect现在被认为是完全不推荐的,为什么数据库连接仍然有效呢?作为一个快速的修复,而我承担的工作升级整个网站,谁能建议替代mysql_numrows。

谢谢您的见解和建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-13 00:39:25

虽然这可以在谷歌上搜索,但我想向提问者解释答案,让未来的读者能够很容易地理解这个问题。

不推荐的代码并不一定意味着代码不能工作。它表明它不再受支持。

从理论上讲,您只需将一个@放在函数前面,错误就不会出现。现在,我建议您不要在工作环境中执行此。它的存在是为了压制警告,但它仍然意味着你有安全弱点。所有表示mysql_functionName()的php函数都过时了(或被废弃了)。要解决这个问题,可以使用一些类似于mysqli_functionName()的内容。

使用mysqli可以让你保持最新的状态。现在我看到你在使用过程造型。这是允许的,但建议您使用面向对象编程或PDO。我个人使用OOP-mysqli。

现在应该注意的是,这不是一个无缝的转换;这意味着您不能简单地将i添加到mysql中。像mysqli_connect()这样的函数是不同。另一方面,mysqli_num_rows()应该通过在mysql中添加i来处理相同的问题。有关转换的更多信息,请查看Mysqli文档这里。

更详细的是:

这几乎是一样的: mysqli_num_rows()

--这些是不同的: mysqli_connect(),mysqli_real_escape_string()

--这是删除的 mysql_result() (在mysqli中没有相应的内置)。

我希望这个答案对你来说已经足够详细了。

编辑:

根据提问者提出的问题,不可能将mysql和mysqli合并在一起。它们是对数据库的不同调用。如果调用mysqli_connect(),则将其设置为的变量连接到该db调用。它只会识别mysqli。mysqli中的许多函数,如mysqli_real_escape_string()和mysqli_query(),都要求您传递原始db调用的连接。

总之,不要试图混淆电话。这是行不通的,它有许多安全问题和缺陷。

我认为,当整个基础结构发生变化时,应该完全重写他们的代码,因为不冒任何可能在编辑中留下的旧代码的风险是更安全的。当然,这有一个很大的缺陷,因为它意味着必须非常努力地重建。在这种情况下,这取决于用户,这取决于项目的大小。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33092234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档