升级到 php 8.1 现在出现“PHP 已弃用:addslashes()”

Mat*_*ner 2 php

我刚刚从 7.3 升级到 php 8.1,并解决了一些损坏的问题。弹出的一条消息是“PHP 已弃用:addslashes()”。我们经常使用该命令,这并不是为了防止 mysql 注入。我们必须处理其中可能包含特殊字符的名称 ' ~ 等。

但是当我查看https://www.php.net/manual/en/function.addslashes.php时 ,它说 PHP8 支持它。

抱歉,我想我还是个新手……但我错过了什么?如果它已经出来了,那么现在支持的处理方式是什么?

更新以添加代码示例和问题澄清

现在我已经睡过了,我发现这不是addslashes() 上的弃用错误。这是一个错误,表明我们传递给函数的值为 NULL。我在文档中看到从 8.1 开始不再允许这样做。

因此,根据这些信息,处理以下示例的新的和改进的方法是什么。

$(function () {
$('.adminheader').html('<?php addslashes(GetMainEventNames()); ?>');
$('.maineventbuttons').button().each(function () {
  var MainEventCode = $(this).attr('data-code');
          $(this).click(function () {
            ChangeLocalActiveStatus(MainEventCode);
          });
      });
Run Code Online (Sandbox Code Playgroud)

错误信息

PHP Deprecated:  addslashes(): Passing null to parameter #1 ($string) of type string is deprecated in....
Run Code Online (Sandbox Code Playgroud)

小智 5

所以你的 PHP 函数至少有时GetMainEventNames()会返回。null这是预期或期望的行为吗?如果是的话,那么有两种可能的解决方案。一种是让您的函数检查返回值是否为 null 并返回一个空字符串。另一种是在函数内使用空合并运算符addslashes(),如下所示:

<?php addslashes(GetMainEventNames() ?? ''); ?>
Run Code Online (Sandbox Code Playgroud)