gpt4 book ai didi

php - 我可以盲目地用mysqli_替换所有mysql_函数吗?

转载 作者:IT老高 更新时间:2023-10-28 23:45:53 25 4
gpt4 key购买 nike

我在整个项目中都使用了 mysql_query();但我刚刚得知 mysql_ 自 PHP 5.5 起已弃用,已在 PHP 7 中删除。

那么,我想知道我是否可以将项目中的所有mysql_函数都替换为mysqli_?例如,只需将 mysql_query() 替换为 mysqli_query()。有没有什么不良影响?

最佳答案

简短的回答是,功能不等价。

好消息是,如果您有很多电话/项目需要更改,那么有一个转换器工具可以帮助您。这将允许您的脚本立即运行。

https://github.com/philip/MySQLConverterTool

它是 Oracle 原始版本的 fork 版本,并且符合犹太教规。

也就是说,更新代码并不太难,而且您可能还是希望迁移到面向对象的方法...

1) 连接

出于所有意图和目的,您需要一个新的连接函数,例如,将连接保存为 PHP 变量;

$mysqli = new mysqli($host, $username, $password, $database);

请注意,我已保存到 $mysqli 的连接。您可以保存到 $db 或您喜欢的任何内容,但您应该在整个代码中使用它来引用连接。

记得开启连接前开启mysqli报错功能;

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

2) 查询

注意:您应该使用 MySQLi 中提供的准备好的语句来防止 SQL 注入(inject)。看看How can I prevent SQL injection in PHP? ,但我只是在这里介绍基础知识。

您现在必须在查询和其他 mysqli_ 函数中包含连接作为参数。在过程代码中它是第一个参数,在 OO 中你可以像类方法一样编写它。

程序:

$result = mysqli_query($mysqli, $sql);

OO:

$result = $mysqli->query($sql);

3) 获取结果

结果的获取类似于过程中旧的mysql_函数;

while ($row = mysqli_fetch_assoc($result))

但是由于$result现在是mysqli中的一个对象,所以可以使用对象函数调用;

while ($row = $result->fetch_assoc())

4) 关闭连接

所以和之前一样,你需要在关闭函数中包含连接;作为程序中的论据;

mysqli_close($mysqli);

并且作为您在 OO 中运行函数的对象;

$mysqli->close();

如果我经历了所有这些,我会永远在这里,但你明白了。看看the documentation了解更多信息。不要忘记转换您拥有的任何连接关闭、结果释放或错误和行计数功能。

基本的经验法则是对于使用数据库连接的函数,您现在需要将其包含在函数中(作为过程中的第一个参数,或者您用于在 OO 中调用函数的对象),或者结果集,您可以将函数更改为 mysqli_ 或使用结果集作为对象。

关于php - 我可以盲目地用mysqli_替换所有mysql_函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26476162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com