- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我在整个项目中都使用了 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/
我想对一个字符串执行搜索和替换,比如 password。 正如您从问题中了解到的那样,替换后的字符串应变为 sdvvzrug。 但不幸的是,下面的代码输出bbbbcaab: $search = ran
我正在使用 futurize --stage2它应用了许多源代码转换以使代码 python2 和 python3 兼容。其中一个修复是所有分区 a/b 都替换为 old_div(a/b),我想避免这种
我正在使用 RStudio,但我在控制台上的输出被截断了。我找不到如何停止截断(我尝试搜索 ?options 以及在谷歌上搜索的时间比我想承认的要长)。 编辑:我向大家道歉!我最初的长名称为“This
我有一个 fragment 堆栈,我在其中使用替换和相加。添加或替换我的 fragment 的代码(在我的 Activity 中)如下 private fun addFragment(fragment
我在一个数组中插入了一些字符串,但在我这样做之前,我想按照主题所说的去做。只用 %20 替换空格,我这样做: Name.push(linkText.replace(" ", "%20")); 但是我如
我正在尝试编译和测试我在网上看到的代码 Expanding an IP add 。但是,当我尝试编译它时,我收到有关 StringBuilder 替换方法的错误。它说: IPadd.java:52:
我正在尝试使用 dplyr 的最新功能重写我的部分代码,方法是将 data.frame() 替换为 data_frame() 和 cbind() 与 bind_cols(): library(rgeo
我最近偶然发现了 replace()和 "[ x.tst s.tst s.tst [,1] [,2] [,3] [1,] 0 0 0
我一直想知道,如何在给定的参数内进行替换。 如果你有这样的一行: 123,Hello,World,(I am, here), unknown 你想更换 World与 Foobar那么这是一个简单的任务
如何转义字符串中的双引号?例如, input: "Nobody" output: \"Nobody\" 我尝试过这样的操作,但不起作用: String name = "Nobody"; name.r
我正在做类似的事情: SQL sql sQl SqL var ps = document.getElementsByTagName('p'); for(var i = 0; i 但它不会替换文本。
我正在尝试用 \" 替换所有 " 并用 JSON 解析字符串,但浏览器抛出错误 SyntaxError: JSON Parse error: Unrecognized token '\'. 下面是代码
大家好,在这里挣扎...... 是否可以将第一个正斜杠之间的任何内容替换为“”,但保留其余部分? 例如var 将是 string "/anything-here-this-needs-to-be-re
在下面的代码中,JavaScript 替换函数中的 alert(a) 将提醒匹配的字符串,在本例中,将是 {name} 和 {place}。 这按照文档 javascript docs 的描述工作,即
+-----------------------------+ | tables | +-------------------
我正在尝试用\"替换包含 "的字符串,下面是我尝试过的程序 String s="\"/test /string\""; s = s.replaceAll("\"", "\\\"");
var text = "a's ..a's ...\"... "; text = convert(text); function convert( text ) { var n = text
我正在尝试使用 JavaScript 中的替换函数,但有一个问题。 strNewDdlVolCannRegion = strNewDdlVolCannRegion.replace(/_existing
好吧,首先我对我的上一篇文章感到非常抱歉,但我真的需要帮助,我会把我真正想要的东西放在一个更清晰的代码中。我不擅长 javascript,所以希望你能帮助我。
我正在写一张纸条,遇到了障碍。可能有更有效的方法来执行此操作,但我对 Python 还很陌生。我正在尝试创建用户生成的 IP 地址列表。我正在使用 print 来查看生成的值是否正确。当我运行此代码时
我是一名优秀的程序员,十分优秀!