【问题标题】:mysqli_real_escape_string doesn't work with list() and explode() functionmysqli_real_escape_string 不适用于 list() 和 explode() 函数
【发布时间】:2017-09-14 16:31:46
【问题描述】:

我使用这行代码:

list($variable1, $variable2) = explode("|", $_POST['something']);

然后,当我将两个变量都放入 mysqli_real_escape_string 中时:

$variable1 = mysqli_real_escape_string($connection, $variable1);
$variable2 = mysqli_real_escape_string($connection, $variable2);

它不起作用。我知道这是因为双引号不会插入到 mysql 数据库中。我哪里错了?

【问题讨论】:

  • 了解preparedMySQLi 语句。即使escaping the string 也不安全!
  • 你为什么用@variable而不是$variable
  • 你不应该再使用mysqli_real_escape_string,它不安全。您应该使用准备好的语句:php.net/manual/en/mysqli.quickstart.prepared-statements.php
  • 它不起作用。所以它会冒烟,着火,什么?
  • 准备语句实际上比使用 mysqli_real_escape_string 容易得多。您永远不必担心再次引用变量,这消除了很多语法错误。

标签: php mysql list explode


【解决方案1】:

您可以使用下面的代码,也可以使用 foreach 循环为数组中的每个现有键/值对分配一个变量。

$clean_post = mysqli_real_escape_string($connection, $_POST['something']);
$array_post = explode("|", $clean_post);
$value1 = $array_post[0];
$value2 = $array_post[1];

【讨论】:

  • 我现在意识到 mysqli_real_escape_string 不是问题,为什么我不能将带双引号的文本插入 mysql 数据库。 Probel 肯定在这段代码中: list($variable1, $variable2) = explode("|", $_POST['something']);但我找不到解决方案。
【解决方案2】:

@variable1 = mysqli_real_escape_string($connection, $variable1);

此代码根本不起作用。语法@variable1 无效。应该是

$variable1 = mysqli_real_escape_string($connection, $variable1);

【讨论】:

猜你喜欢
  • 2021-05-15
  • 1970-01-01
  • 1970-01-01
  • 2012-11-19
  • 2014-06-19
  • 1970-01-01
  • 2020-06-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多