我在mysql_query()
整个项目中都用过;但是我刚刚了解到,mysql_
PHP 5.5起已弃用该功能,而PHP 7中已将其删除。
因此,我想知道是否可以盲目替换项目中的所有mysql_
功能mysqli_
吗?例如,仅替换mysql_query()
为mysqli_query()
。有副作用吗?
简短的回答是 no ,功能不相等。
好消息是,有一个转换工具可以在您需要更改许多调用/项目时为您提供帮助。这将使您的脚本立即可用。
https://github.com/philip/MySQLConverterTool
它是Oracle原始版本的分叉版本,并且是犹太洁食。
也就是说,更新代码并不是很困难,并且您可能仍想迁移到面向对象的方法…
1)连接
为了所有目的和目的,您需要一个新的连接函数,例如,将连接另存为PHP变量;
$mysqli = new mysqli($host,$username,$password,$database);
请注意,我已将连接保存到$mysqli
。您可以保存到$db
或保存任何内容,但是在整个代码中都应使用它来引用连接。
不过请记住要检查连接错误;
if ($mysqli->connect_errno) echo "Error - Failed to connect to MySQL: " . $mysqli->connect_error;
2)查询
注意:您应该使用MySQLi中可用的预备语句来防止SQL注入。
看一看如何防止PHP中的SQL注入?,但我只是在这里介绍基础知识。
现在,您必须在查询和其他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)关闭连接
因此,与以前一样,您需要在close函数中包括连接;作为程序上的论点;
mysqli_close($mysqli);
作为在OO中运行该函数的对象;
$mysqli->close();
如果我全部经历了这些,我将永远在这里,但是您明白了。请查看文档以获取更多信息。不要忘记转换任何连接关闭,结果释放或错误和行计数功能。
基本的经验法则是使用数据库连接的函数,您现在需要将其包括在函数中(作为过程中的第一个参数,或用作OO中调用函数的对象),或结果集您可以将函数更改为mysqli_
或将结果集用作对象。
问题内容: 编辑: 是否使用不在此问题的范围内。考虑使用PDO。 需要采取什么步骤将脚本从使用不赞成使用的功能转换为? 使用代替时,是否需要采取其他不同的措施? 这是使用函数的基本脚本: 问题答案: 注意: 从转换到可能不是最佳的。如果您准备将所有代码转换为OOP,请考虑使用 PDO 。 这是很有诱惑力的尝试更换的所有实例与祈祷它的工作原理。您会很亲密,但不是很准。 连接到数据库: 幸运的是,该方
问题内容: 我一直在做的简单连接,: 虽然使用这个我一直使用的简单的方法,使查询之前逃脱的任何数据,不管是,,或者通过使用 现在我知道这在一定程度上是安全的! 它逃脱了危险人物;但是,它仍然容易受到其他攻击的攻击,这些攻击可能包含安全字符,但可能有害于显示数据或在某些情况下恶意修改或删除数据。 因此,我进行了一些搜索,以了解有关PDO,MySQLi和准备好的语句的信息。是的,我可能迟到了游戏,但是
问题内容: 我正在使用 EclipseLink的JAXB实现的一些非标准扩展,并且要启用该实现,必须使用jaxb.properties对其进行配置。效果很好。 但是,由于生成错误,属性文件未包含在正确的位置,从而导致使用默认的JAXB,该文件没有任何错误,只是继续解析XML文件,忽略了非标准扩展名,给我留下了一个非工作bean。 为了使它更加健壮,我想摆脱属性文件,并在代码中指定上下文配置。由于它
问题内容: 您可以在Python中执行此操作,但是在PHP中可以吗? 例如: 问题答案: 这 有点 晚了,但我只想指出,自PHP 5.3起,实际上有可能在不使用PHP扩展的情况下覆盖内部函数。 诀窍是您可以在名称空间内重新定义内部PHP函数。它基于PHP对函数进行名称解析的方式: 在名称空间(例如A \ B)内部,对不合格函数的调用在运行时解决。解决调用foo()的方法如下: 它从当前名称空间中查
如何替换所有标签
问题内容: 首先,当我问一个非常基本且特殊的问题时,我感到很遗憾;但是我对Java和编程都不陌生。我研究了system.out.println()中的“ out”是系统类的对象。“ out”可以用系统类的任何其他对象替换吗?如果是这样,成员是什么? 问题答案: 您可以拨打任何电话。如果您查看javadoc,则会发现另一个静态字段,即。例如: 如果您想用自己的输出流实际替换标准,则可以将流传递给或相