【问题标题】:can't insert apostrophe inside textarea and insert to mysql无法在 textarea 中插入撇号并插入到 mysql
【发布时间】:2015-07-09 15:52:09
【问题描述】:

当我试图在 textare 中插入一些带有撇号的文本到 mysql 数据库时,它根本不会插入任何内容,有人知道这是为什么吗? 我希望有人可以帮助我。

一些代码

PHP

foreach ($_POST['episode'] as $episode => $value ) {
            $episode_title = $value['episode_title'];
            $episode_filename = $value['episode_filename'];
            $episode_image = $value['episode_image'];
            $episode_description = $value['episode_description'];
            $subtitle_language = $value['subtitle_language'];
            $subtitle_filename = $value['subtitle_filename'];
            $image_extension = $value['image_extension'];
            $sql_episode = "INSERT INTO episodes VALUES ('', '$episode_title', '$episode_filename', '$episode_image', '$episode_description', '$subtitle_language', '$subtitle_filename', '$image_extension', '$inserted_child_id', '$inserted_cover_id')";
            if ($db->query($sql_episode) === TRUE) {
                $inserted_episode_id = $db->insert_id;
            }

        }

HTML

<textarea name="episode[0][episode_description]" placeholder="Episode Description..."></textarea>

【问题讨论】:

  • 您需要转义变量或使用准备好的语句。注意:显示您的一些代码将帮助人们帮助您
  • 了解prepared statements
  • 与您的问题无关,但如果您只是根据名称分配变量,extract() 可能会为您节省一些精力。

标签: php mysql textarea sql-injection


【解决方案1】:

您需要“转义”您的字符串,以便引号不会破坏代码结构。通过以下一项或多项传递您发布的变量:

mysqli_real_escape_string($db,$string);
addslashes($string);

或其他类似功能,用于转换或“转义”引号。

例如:

$episode_description = mysqli_real_escape_string($db,$value['episode_description']);

【讨论】:

  • 谢谢!很有帮助!
  • 不,不是“一个或多个”,也不是addslashes
猜你喜欢
  • 2012-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 2014-02-19
相关资源
最近更新 更多