- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在整个项目中使用了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_
函数中。在过程代码中它是第一个参数,在面向对象中你可以像类方法一样编写它。
程序:
$result = mysqli_query($mysqli, $sql);
面向对象:
$result = $mysqli->query($sql);
3) 获取结果
结果的获取与程序中旧的mysql_
函数类似;
while ($row = mysqli_fetch_assoc($result))
但是由于$result
现在是mysqli中的一个对象,您可以使用对象函数调用;
while ($row = $result->fetch_assoc())
4) 关闭连接
所以和以前一样,您需要将连接包含在 close 函数中;作为程序中的参数;
mysqli_close($mysqli);
作为在 OO 中运行函数的对象;
$mysqli->close();
如果我经历了所有这些,我会永远在这里,但你明白了。看看the documentation了解更多信息。不要忘记转换您拥有的任何连接关闭、结果发布或错误和行计数函数。
基本的经验法则是,对于使用数据库连接的函数,您现在需要将其包含在函数中(作为过程中的第一个参数,或者用于在 OO 中调用函数的对象),或者一个结果集,您只需将函数更改为 mysqli_
或使用结果集作为对象即可。
关于php - 我可以盲目地将所有mysql_函数替换为mysqli_吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57234573/
自从我在服务器上将 PHP 更新到 PHP 5.5 后,我想使用 PDO 而不是 mysql_ 重写一个项目。在这个项目中,我有一个 Controller 和一个模型(当然还有一个 View ,但这并
我的一个托管服务器不支持 PDO。有吗mysql_与 PDO prepare() 具有相同功能的命令和execute() ? 我正在寻找参数替换功能,即 VALUES (?, ?) . 最佳答案 您可
这个问题在这里已经有了答案: Why shouldn't I use mysql_* functions in PHP? (14 个答案) 关闭 6 年前。 我听说 mysql_ 扩展在当前的 PH
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
在 php.net 网站上,他们说那些在 php5 或更高版本旁边使用 mysql4.1 的人必须使用非常“MYSQLI_”而不是“MYSQL_”。 他只想知道一件事,它会影响站点的性能,站点的几个问
当我学习 php 时,我从显然较旧的指南中学习并且一直在使用 mysql_ 函数。我正在将所有内容切换到 PDO,我有一个我真的想保留的功能,但我不太清楚如何更改它。这是 mysql_ 函数。 fun
首先我应该说我开始学习 PDO 并尝试重写一些旧的我的代码。这是我在 jquery/ajax/pdo/mysql 评论系统的教程中找到的一个正在运行的评论系统。这是我正在尝试重写的 mysql_* 部
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: mysql_fetch_array() expects parameter 1 to be resource
我的 SQL 数据库中有一张表,该表有两个字段,一个用于 ID,另一个用于整数。我想获取整数字段中的值,其中 id 等于我传入的特定数字。id 字段称为“id”,整数字段称为“loglevel”。这是
我只想检查 $lectureName 显示的位置是否存在一行。如果行中某处确实存在 $lectureName,我希望函数返回“已分配”,如果没有,则它应该返回“可用”。这就是我所拥有的。我很确定它一团
我写了一些代码,这些代码经常使用 mysqli_。问题是我现在需要将此代码与使用 mysql_ 的代码集成,并处理连接、身份验证等。我不想创建第二个连接,但是 mysql_ 缺少一些功能,例如,准备好
想要改进此帖子? 提供此问题的详细答案,包括引用和对答案正确原因的解释。不够详细的答案可能会被编辑或删除。 为什么不应该使用 mysql_* 函数的技术原因是什么? (例如 mysql_query(
想要改进此帖子? 提供此问题的详细答案,包括引用和对答案正确原因的解释。不够详细的答案可能会被编辑或删除。 为什么不应该使用 mysql_* 函数的技术原因是什么? (例如 mysql_query(
想要改进此帖子? 提供此问题的详细答案,包括引用和对答案正确原因的解释。不够详细的答案可能会被编辑或删除。 为什么不应该使用 mysql_* 函数的技术原因是什么? (例如 mysql_query(
想要改进此帖子? 提供此问题的详细答案,包括引用和对答案正确原因的解释。不够详细的答案可能会被编辑或删除。 为什么不应该使用 mysql_* 函数的技术原因是什么? (例如 mysql_query(
想要改进此帖子? 提供此问题的详细答案,包括引用和对答案正确原因的解释。不够详细的答案可能会被编辑或删除。 为什么不应该使用 mysql_* 函数的技术原因是什么? (例如 mysql_query(
我需要用 PDO 的 mysql_* 函数重写我的 php 代码,所以我有: 我尝试写这个,但使用像这样的 PDO 函数: setAttribute(PDO::ATTR_ERRMODE, PDO::
想要改进这篇文章吗?提供此问题的详细答案,包括引用和解释为什么你的答案是正确的。不够详细的答案可能会被编辑或删除。 不应该使用 mysql_* 的技术原因是什么?功能? (例如 mysql_query
想要改进这篇文章吗?提供此问题的详细答案,包括引用和解释为什么你的答案是正确的。不够详细的答案可能会被编辑或删除。 不应该使用 mysql_* 的技术原因是什么?功能? (例如 mysql_query
想要改进这篇文章?提供这个问题的详细答案,包括引文和解释为什么你的答案是正确的。没有足够细节的答案可能会被编辑或删除。 为什么不应该使用 mysql_* 的技术原因是什么?职能? (例如 mysql_
我是一名优秀的程序员,十分优秀!